DESCRIBE 文

-

PREPARE 文の後に DESCRIBE 文を実行すると、指定した PREPARE 文が返す各列のデータ型、データ長、および列名に関する情報を取得できます。この情報は、次のようにして SQL 記述子領域 (SQLDA) に返されます。

EXEC SQL
   DESCRIBE stmt1 INTO :sqlda
END-EXEC

PREPARE 文の実行直後に DESCRIBE 文を実行する場合は、次のように PREPARE 文で INTO オプションを使用すると、両方の手順を一度に実行できます。

EXEC SQL
   PREPARE stmt1 INTO :sqlda FROM :stmtbuf
END-EXEC

次の場合は、DESCRIBE の実行後にホスト変数の型および長さの違いに対応するために、SQLDA の SQLTYPE または SQLLEN フィールドの手動変更が必要となることがあります。

SQLTYPE:可変長文字型
可変長文字型の場合、SQLTYPE の定義を、PIC X、N、G などの固定長 COBOL ホスト変数にするか、長さおよび実際の値の両方についてレベル 49 のサブフィールドを持つレコードなどの可変長ホスト変数にするかを選択できます。SQLLEN フィールドは、SQLTYPE 値に応じて 16 ビットまたは 32 ビットのいずれかになります。
SQLTYPE:数値型
数値型の場合、SQLTYPE の定義を、COMP-3、COMP、COMP-5 とするか、数字の COBOL ホスト変数に先頭または末尾の符号を含めてまたは分けて表示するかを選択できます。DESCRIBE の戻り値はデータ ソースに依存します。一般的には、これは NUMERIC 列または DECIMAL 列の場合は COMP-3 であり、tinyint、smallint、integer または bigint 整数型の列の場合は COMP-5 です。
SQLLEN
DESCRIBE は、SQLLEN を COMP および COMP-5 表現の整数列のサイズに設定し、値は 1、2、4、または 18 になります。これは、SQLTYPE に応じて調整が必要となる場合があります。NUMERIC 列および DECIMAL 列の場合、これは結果の精度および位取りをエンコードします。