Sybase查詢表結構的方法(類似於Oracle的Desc)
阿新 • • 發佈:2019-02-02
經過我多次驗證,終於找到了Sybase中查詢資料庫結構的方法了。
在此之前,我就很不解這Sybase資料庫怎麼就沒有和Oracle、MySql一樣簡便的方法呢
desc 表名;
在網上查詢之後,得到一個結果。
sp_help 表名;
但是這樣查出了多個結果。雖然裡面有我們想要的結果,但我們只取一個,而且還在中間。
怎麼辦呢?看儲存過程原始碼,把我們想要的結果截取出來吧。
sp_help儲存過程在sybsystemprocs庫中,
原始碼:
程式碼篇幅過長,此處省略……
一行一行判斷,找下去。
我們發現在原始碼的556行“if (@sysstat & 15) in (1, 2, 3)”有我們想要的結果,這段IF語句是將表結果查詢之後插入一個臨時表#helptype中,然後再進行查詢出來的。
我們不要那麼麻煩,只取裡面的三列:欄位名,欄位型別,欄位長度。
當然你想封裝成儲存過程也可以的,但不能使用desc就是。
select isnull(c.name, 'NULL') '欄位名',
t.name '欄位型別',
c.length '欄位長度'
from syscolumns c, systypes t, sysxtypes x
where c.id = object_id('表名')
and c.usertype *= t.usertype
and c.xtype *= x.xtid;