DESCRIBE

構文
>>---EXEC SQL-----DESCRIBE---.----------------------.----->
                             +---SELECT LIST FOR----+
                             +---BIND VARIABLES FOR-+

 >--prepared_stmt_name---INTO---:sqlda_struct---END-EXEC--><
パラメタ
prepared_stmt_name 準備された SQL SELECT 文または QUERY ODBC 文の名前を指定します。
:sqlda_struct 書き込み対象となる出力 SQL 記述子領域 (SQLDA) データ構造を指定するホスト変数を指定します。 コロンを使用して、その他の埋め込み SQL 実装との互換性を保つことができます。
目的

DESCRIBE 文により、準備された動的 SQL 文に関する情報が提供されます。 この文は、指定した SQLDA データ構造に、指定した準備された文によって返されるデータ型、長さ、および列名が書き込まれます。

SELECT LIST FOR または BIND VARIABLES FOR のどちらも指定しない場合は、SELECT LIST がデフォルトになります。BIND VARIABLES FOR を指定した場合は、結果列に関する情報ではなく、入力パラメータに関する情報が SQLDA に返されます。

DESCRIBE 文により、列の数が SQLDA 構造の sqld フィールドに挿入されます。 非選択文が準備された場合は、sqld が 0 に設定されます。 DESCRIBE を呼び出す前に SQLDA データ構造の次のフィールドをアプリケーションで初期化する必要があります。

sqln 構造を持つことができる sqlvar (列記述子) 項目の最大数。
sqldabc SQLDA の最大サイズ。

  • 32-bit - sqln * 44 + 16 で計算される
  • 64-bit - sqln * 56 + 16 で計算される

sqln を 0 に設定した場合、列記述子項目は作成されませんが、 sqld は必要な項目数に設定されます。DESCRIBE 文は、INTO 句付きの PREPARE 文と似た動作をします。

省略時解釈では、日付、時刻、タイムスタンプに対する SQL型は、それぞれ DATE-RECORD, TIME-RECORD, TIMESTAMP-RECORD となります。 SQLコンパイル指令中で BEHAVIOR=MAINFRAME オプションを指定すると、OpenESQL は これらのデータ型に対してメインフレーム上の DB2 の動作をシミュレートし、 文字列型 ( PIC X(n)) を返します。

注:

ほとんどのドライバは、DESCRIBE BIND VARIABLES に必要な ODBC 呼び出しを完全には実装していません。

例:
     EXEC SQL INCLUDE SQLDA END-EXEC
     EXEC SQL BEGIN DECLARE SECTION END-EXEC
     01 statement   pic x(80).
     EXEC SQL END DECLARE SECTION END-EXEC

     EXEC SQL
         DECLARE C1 CURSOR FOR stmt1
     END-EXEC

     move "select * from dept" into statement

     move 20 to sqln
    $IF P64 SET
     compute sqldabc = 16 + 56 * sqln
    $ELSE
     compute sqldabc = 16 + 44 * sqln
    $END
     
     EXEC SQL
         PREPARE stmt1 FROM :statement
     END-EXEC
     EXEC SQL 
         DESCRIBE stmt1 INTO :sqlda 
     END-EXEC

* The data structure "sqlda" now contains a description 
* of the dynamic SQL statement.
     EXEC SQL 
         OPEN C1 
     END-EXEC

* Complete the SQLDA, by adding buffer addresses and lengths

     EXEC SQL
         FETCH C1 USING DESCRIPTOR :sqlda
     END-EXEC
他参照:

関連項目