>>---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 の最大サイズ。
|
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