4.14.1 DESCRIBE文 形式1の形式と規則
(1) 機能
PREPARE文で前処理したSQLの検索項目情報,又は出力?パラメタ情報をSQL記述領域(データコード,データ長など)に受け取ります。
受け取り情報の詳細は,マニュアル「HiRDB UAP開発ガイド」を参照してください。PREPARE文で前処理したSQLがSQLの検索項目情報,又は出力?パラメタ情報を持たない場合には,SQL記述領域のSQLD領域に0が設定されます。
(2) 使用権限
なし。
(3) 形式1 <検索項目情報,又は出力?パラメタ情報の受け取り>
DESCRIBE 〔OUTPUT〕 {SQL文識別子|拡張文名} INTO 〔:〕SQL記述領域名〔〔:〕列名記述領域名〕 〔TYPE〔:〕型名記述領域名〕 〔CHARACTER_SET〔:〕文字集合名記述領域名〕
(4) オペランド
(a) {SQL文識別子|拡張文名}
- SQL文識別子
-
PREPARE文で指定したSQL文識別子を指定します。
- 拡張文名
-
PREPARE文で前処理したSQL文を識別する拡張文名を指定します。
拡張文名については,「拡張文名」を参照してください。
(b) 〔:〕SQL記述領域名〔〔:〕列名記述領域名〕
- SQL記述領域名
-
SQLの検索項目情報(前処理したSQLがSELECT文の場合),又は出力?パラメタ情報(前処理したSQLがCALL文の場合)を受け取るSQL記述領域の名称を指定します。
SQL記述領域については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
- 列名記述領域名
-
検索項目の名称,又はルーチンのパラメタ名を受け取る列名記述領域を指定します。
列名記述領域については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(c) 〔TYPE〔:〕型名記述領域名〕
- 型名記述領域名
-
検索項目のユーザ定義型名を受け取る型名記述領域を指定します。
型名記述領域については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(d) 〔CHARACTER_SET〔:〕文字集合名記述領域名〕
- 文字集合名記述領域名
-
検索項目情報(前処理したSQLがSELECT文の場合),又は出力?パラメタ情報(前処理したSQLがCALL文の場合)の文字集合名を受け取る文字集合名記述領域を指定します。
文字集合名記述領域については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
(5) 共通規則
-
UAPは,DESCRIBE文を実行する前に,SQL記述領域にSQLVARの数(SQLN領域)を設定してください。
-
SQLDATAとSQLINDはDESCRIBE文実行時にクリアされるので,DESCRIBE文を使用する場合は,その実行後に値を設定してください。
-
列名記述領域名を指定する場合は,対応するPREPARE文でWITH SQLNAME OPTIONを指定してください。
-
列名記述領域名は,検索項目の名称,又はルーチンのパラメタ名を受け取る場合だけ指定してください。ただし,ルーチンのパラメタ名は,CALL文の引数に単独で?パラメタを指定した場合にだけ受け取ることができます。?パラメタを含む値式を指定した場合は,列名記述領域の名称の長さが0になります。
-
型名記述領域名を指定する場合は,対応するPREPARE文でWITH〔ALL〕TYPE OPTIONを指定してください。
-
型名記述領域名は,検索項目のユーザ定義型名を受け取る場合だけ指定してください。
-
文字集合名記述領域は,検索項目情報(前処理したSQLがSELECT文の場合),又は出力?パラメタ情報(前処理したSQLがCALL文の場合)のデータ型が文字データ型で,文字集合を指定している場合だけ指定してください。
(6) 留意事項
-
SQL文識別子は,埋込み変数名と同様に,コンパイル単位のファイル内で有効な名前であり,同じSQL文識別子に対する複数のSQLを,複数のモジュールにわたって使用できません。
-
出力?パラメタがユーザ定義型の手続きの場合,ユーザ定義型の出力?パラメタに対して型名情報は設定されません。
-
DESCRIBE〔OUTPUT〕文を使用しなくても,PREPARE文でOUTPUTを指定した場合,DESCRIBE〔OUTPUT〕で得られる情報と同様の情報を得ることもできます。
-
ユーザ定義型の所有者名の長さが9文字以上の場合,型名記述領域を使用できません。
(7) 使用例
-
PREPARE文で前処理したSELECT文(SQL文識別子:PRESQL)の検索項目情報,及び検索項目の名称,又はルーチンのパラメタ名を,SQL記述領域,及び列名記述領域に指定します。
DESCRIBE PRESQL INTO :SQLDA :SQLCNDA
-
PREPARE文で前処理したSELECT文(拡張文名:pre)の検索項目情報,及び検索項目の名称を,SQL記述領域,及び列名記述領域に指定します。
PREPARE GLOBAL :pre FOR :sel WITH SQLNAME OPTION DESCRIBE GLOBAL :pre INTO :SQLDA :SQLCNDA