【Oracle】フィールド一覧の取得

Oracleで、フィールド一覧を取得する方法です。
TABLE、VIEWが対象になります。
ストアドはソースが取得できるのですが、パラメータ情報の取得方法は無さそうです。
面倒くさいけど、地道に解析するしか無さそうです。

「:TABLE_NAME」は、バインド変数なので、対象としたいテーブル名を入れてください。

DATA_PRECISION、DATA_SCALE の2つを組み合わせると、NUMBER型の桁数を求めることができます。
NUMBER型の場合は、常にFIELD_SIZE = 22で返ってくるので、注意してください。

SELECT 
    A.COLUMN_NAME AS FIELD_NAME, 
    A.DATA_TYPE AS FIELD_TYPE, 
    A.DATA_LENGTH AS FIELD_SIZE, 
    DECODE(C.POSITION, NULL, 0, 1) AS IS_PK, 
    A.NULLABLE,
    A.DATA_PRECISION, 
    A.DATA_SCALE 
FROM 
    USER_TAB_COLUMNS A 
    LEFT OUTER JOIN USER_CONSTRAINTS B ON A.TABLE_NAME = B.TABLE_NAME AND B.CONSTRAINT_TYPE = 'P' 
    LEFT OUTER JOIN USER_CONS_COLUMNS C ON B.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND A.COLUMN_NAME = C.COLUMN_NAME 
WHERE 
    A.TABLE_NAME = :TABLE_NAME 
ORDER BY 
    A.TABLE_NAME, 
    A.COLUMN_ID
投稿者: ♪ 日時: 2007年12月30日 22:19 このエントリーをはてなブックマークに追加 このエントリーをYahoo!ブックマークに登録 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをBlogPeople Tagsに追加 このエントリーをBlogPeople Instant Bookmarkに追加 このエントリーをPingKingポッケに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 Yahoo!ブックマークでこのサイトを登録している人数 人が登録

トラックバック

このエントリーのトラックバックURL:
http://magicbox.sakura.ne.jp/mt/mt-tb.cgi/494

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)