ここでは、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 テーブルからはその他にも情報を取得できますので、以下の参考リンクより取得できる項目をご確認ください。
参考