Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


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) 共通規則

  1. UAPは,DESCRIBE文を実行する前に,SQL記述領域にSQLVARの数(SQLN領域)を設定してください。

  2. SQLDATAとSQLINDはDESCRIBE文実行時にクリアされるので,DESCRIBE文を使用する場合は,その実行後に値を設定してください。

  3. 列名記述領域名を指定する場合は,対応するPREPARE文でWITH SQLNAME OPTIONを指定してください。

  4. 列名記述領域名は,検索項目の名称,又はルーチンのパラメタ名を受け取る場合だけ指定してください。ただし,ルーチンのパラメタ名は,CALL文の引数に単独で?パラメタを指定した場合にだけ受け取ることができます。?パラメタを含む値式を指定した場合は,列名記述領域の名称の長さが0になります。

  5. 型名記述領域名を指定する場合は,対応するPREPARE文でWITH〔ALL〕TYPE OPTIONを指定してください。

  6. 型名記述領域名は,検索項目のユーザ定義型名を受け取る場合だけ指定してください。

  7. 文字集合名記述領域は,検索項目情報(前処理したSQLがSELECT文の場合),又は出力?パラメタ情報(前処理したSQLがCALL文の場合)のデータ型が文字データ型で,文字集合を指定している場合だけ指定してください。

(6) 留意事項

  1. SQL文識別子は,埋込み変数名と同様に,コンパイル単位のファイル内で有効な名前であり,同じSQL文識別子に対する複数のSQLを,複数のモジュールにわたって使用できません。

  2. 出力?パラメタがユーザ定義型の手続きの場合,ユーザ定義型の出力?パラメタに対して型名情報は設定されません。

  3. DESCRIBE〔OUTPUT〕文を使用しなくても,PREPARE文でOUTPUTを指定した場合,DESCRIBE〔OUTPUT〕で得られる情報と同様の情報を得ることもできます。

  4. ユーザ定義型の所有者名の長さが9文字以上の場合,型名記述領域を使用できません。

(7) 使用例

  1. PREPARE文で前処理したSELECT文(SQL文識別子:PRESQL)の検索項目情報,及び検索項目の名称,又はルーチンのパラメタ名を,SQL記述領域,及び列名記述領域に指定します。

    DESCRIBE PRESQL INTO :SQLDA :SQLCNDA
  2. PREPARE文で前処理したSELECT文(拡張文名:pre)の検索項目情報,及び検索項目の名称を,SQL記述領域,及び列名記述領域に指定します。

    PREPARE GLOBAL :pre FOR :sel WITH SQLNAME OPTION
    DESCRIBE GLOBAL :pre INTO :SQLDA :SQLCNDA