ここでは、Oracle のテーブルの定義情報を取得する SQL を掲載しています。なお、ここで示す SQL は Oracle9.0 以降を対象としており、それ以前の Oracle については対応していません。
※ 本 SQL は ZendFramework-1.11.3 内のコードから部分的に抜粋したものです。
スポンサーリンク
テーブル定義情報取得 SQL
SELECT
TC.TABLE_NAME, --- テーブル名
TC.OWNER, --- 所有者
TC.COLUMN_NAME, --- カラム名
TC.DATA_TYPE, --- データタイプ(型 VARCHAR2 など)
TC.DATA_DEFAULT, --- デフォルト値
TC.NULLABLE, --- NULL を許容する場合は 'Y'
TC.COLUMN_ID, --- コラムID(コラム位置 : 1 から始まる連番)
TC.DATA_LENGTH, --- データ長
TC.DATA_SCALE, --- NUMBER 型の場合の小数点以下の桁数
TC.DATA_PRECISION, --- NUMBER 型の場合の全体の桁数(精度)
C.CONSTRAINT_TYPE, --- プライマリキーの場合は 'P'、 ユニークキーの場合は 'U' など
CC.POSITION --- プライマリキーの場合の位置
FROM ALL_TAB_COLUMNS TC
LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C
ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P'))
ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME
WHERE
UPPER(TC.TABLE_NAME) = UPPER(:TBNAME) --- :TBNAME に取得するテーブル名を代入する
ORDER BY
TC.COLUMN_ID
ALL_TAB_COLUMNS テーブル、ALL_CONS_COLUMNS テーブル、ALL_CONSTRAINTS テーブルからはその他にも情報を取得できますので、以下の参考リンクより取得できる項目をご確認ください。
参考