- 2006年7月12日 11:16
- データベース
テーブル情報の取得と同じように、SYS***関連のテーブルを結合することで取得できます。
得たい情報によって結合するSYS***が変わりますが、大体こんな感じになるんじゃないかなと思います。
少々長いですが、フィールドの方向やIDENTITYかどうかも取得できるようになっています。
必要に応じて追加・削除してくださいまし。
SELECT
CAST(A.NAME AS VARCHAR(40)) AS FIELD_NAME,
CAST(C.NAME AS VARCHAR(20)) AS FIELD_TYPE,
CASE WHEN A.STATUS & 8 = 8 THEN 1 ELSE 0 END AS DIRECTION_INPUT,
CASE WHEN A.STATUS & 64 = 64 THEN 1 ELSE 0 END AS DIRECTION_OUTPUT,
CASE WHEN A.STATUS & 128 = 128 THEN 1 ELSE 0 END AS IS_IDENTITY,
A.LENGTH AS FIELD_SIZE,
CASE WHEN E.COLID IS NULL THEN '0' ELSE '1' END AS PK_FLAG,
A.NUMBER AS PROCEDURE_NO
FROM
SYSCOLUMNS AS A
INNER JOIN SYSOBJECTS AS B ON B.ID = A.ID
INNER JOIN SYSTYPES AS C ON C.XUSERTYPE = A.XTYPE
LEFT JOIN SYSINDEXES AS D ON D.ID = A.ID
AND D.STATUS & 2048 <> 0
LEFT JOIN SYSINDEXKEYS AS E ON E.ID = D.ID
AND E.INDID = D.INDID
AND E.COLID = A.COLID
WHERE
B.NAME = '対象テーブル名'
ORDER BY
A.NUMBER,
A.COLID
このSQLでは、テーブル以外にもストアドの情報まで取れるようになっています。
PROCEDURE_NOが1以上のときは、ストアドで使用される項目となります。
Comments:0
Trackbacks:1
- TrackBack URL for this entry
- http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/73
- Listed below are links to weblogs that reference
- 【SQLServer】フィールド情報の取得 from 爆裂!C#野郎
- PropertyGrid(System.Windows.Forms.PropertyGrid) from 主婦と.NETと犬のぶろぐ 2007-03-20 (火) 10:37
- PropertyGrid(System.Windows.Forms.PropertyGrid)