1. 程式人生 > >Sybase查詢表結構的方法(類似於Oracle的Desc)

Sybase查詢表結構的方法(類似於Oracle的Desc)

經過我多次驗證,終於找到了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;