DBオブジェクトの情報取得方法
DBオブジェクトの情報取得方法について説明します。
DBDBオブジェクトの情報はカタログビューに格納されており、そのビューをSELECTすることにより取得することができます。
主なDBオブジェクトと情報が格納されているカタログは以下の通りです。
No | DBオブジェクト | カタログ名 | 備考 |
---|---|---|---|
1 | テーブル | SYSCAT.TABLES | |
2 | カラム | SYSCAT.COLUMNS | |
3 | 制約 | SYSCAT.TABCONST | |
4 | インデックス | SYSCAT.INDEXES | |
5 | ビュー | SYSCAT.VIEWS | MQTも含まれる。 |
6 | シーケンス | SYSCAT.SEQUENCES | |
7 | ファンクション | SYSCAT.ROUTINES | |
8 | プロシージャ | SYSCAT.ROUTINES |
テーブル
テーブルの情報を取得するサンプルSQLです。
SELECT TABSCHEMA, TABNAME, OWNER FROM SYSCAT.TABLES WHERE TABSCHEMA = 'スキーマ名' ;
カラム
カラム情報を取得するサンプルSQLです。
SELECT TABNAME, COLNAME, TYPENAME, LENGTH, SCALE, DEFAULT, NULLS, TABSCHEMA FROM SYSCAT.COLUMNS WHERE TABSCHEMA = 'スキーマ名' ;
制約
制約情報を取得するサンプルSQLです。
SELECT TABNAME, CONSTNAME, TYPE, TABSCHEMA FROM SYSCAT.TABCONST WHERE TABSCHEMA = 'スキーマ名' ;
インデックス
インデックス情報を取得するサンプルSQLです。
SELECT INDNAME, TABNAME, COLNAMES, COLCOUNT, INDSCHEMA FROM SYSCAT.INDEXES WHERE INDSCHEMA = 'スキーマ名' ;
ビュー
ビュー情報を取得するサンプルSQLです。
SELECT VIEWNAME, VIEWSCHEMA, TEXT FROM SYSCAT.VIEWS WHERE VIEWSCHEMA = 'スキーマ名' ;
シーケンス
シーケンス情報を取得するサンプルSQLです。
SELECT SEQNAME, START, MAXVALUE, NEXTCACHEFIRSTVALUE, CYCLE, CACHE, ORDER, SEQSCHEMA FROM SYSCAT.SEQUENCES WHERE SEQSCHEMA = 'スキーマ名' ;
ファンクション
ファンクション情報を取得するサンプルSQLです。
SELECT ROUTINENAME, ROUTINETYPE, TEXT, ROUTINESCHEMA FROM SYSCAT.ROUTINES WHERE ROUTINETYPE = 'F' -- ファンクション AND ROUTINESCHEMA = 'スキーマ名' ;
プロシージャ
プロシージャ情報を取得するサンプルSQLです。
SELECT ROUTINENAME, ROUTINETYPE, TEXT, ROUTINESCHEMA FROM SYSCAT.ROUTINES WHERE ROUTINETYPE = 'P' -- プロシージャ AND ROUTINESCHEMA = 'スキーマ名' ;