基本 SQLVAR のオカレンス内のフィールドの説明

基本 SQLVAR のフィールドの使用は、SQL ステートメントによって異なります。

下表は、基本 SQLVAR のフィールドの内容を説明しています。

表 1. 基本 SQLVAR のオカレンスのフィールド
C
名アセンブラ
COBOL または
PL/I name
データ
の種類
DESCRIBE1
および PREPARE INTO での使用法
FETCH、OPEN、
EXECUTE、CALLでの使用法
sqltype
SQLTYPE
SMALLINT 列またはパラメーターのデータ・タイプ、およびそれに NULL 値を入れられるかどうかを示す。 タイプコードの説明については、 表1 を参照してください。

特殊タイプの場合、その特殊タイプの基になっているデータ・タイプがこのフィールドに入れられる。 基本 SQLVAR では、これが特殊タイプの記述の一部であることは指示されない。

ホスト変数のデータ・タイプ、および標識変数が与えられているかどうかを示す。 日付/時刻の値のホスト変数は、文字ストリング変数でなければなりません。 FETCH の場合、日付/時刻のタイプ・コードは、固定長文字ストリングを意味します。 タイプコードの説明については、 SQLDAのSQLTYPEとSQLLENフィールドを参照してください。
sqllenSQLLEN
SMALLINT 列またはパラメーターの長さ属性。 日時データの場合は、値のストリング表現の長さ。 許容値については、 SQLDAのSQLTYPEとSQLLENのフィールドを参照してください。

LOB の場合は、LOB の長さ属性に関係なく、値は 0。 XML の場合、値は 0。 拡張 SQLVAR 内の フィールド SQLLONGLEN には、長さ属性が含まれる。

ホスト変数の長さ属性。 許容値については、 SQLDAのSQLTYPEとSQLLENのフィールドを参照してください。

LOB の場合は、LOB の長さ属性に関係なく、値は 0。 拡張 SQLVAR 内の フィールド SQLLONGLEN には、長さ属性が含まれる。

XML AS BLOB、CLOB、または DBCLOB の場合、LOB タイプの場合と同様に、sqllen は 0。

sqldata
SQLDATA
ポインター ストリング列またはパラメーターの場合、SQLDATA には X'0000zzzz' (zzzz は 関連する CCSID) が入る。 文字ストリングの場合、SQLDATA には代わりに X'FFFF' (ビット・データを示す) を入れることができる。 その他のタイプのデータでは使わない。

日時列の場合、SQLDATA には、ストリング表現の日時値の CCSID を入れることができる。

DESCRIBE PROCEDURE の場合、結果セットに関連した結果セット・ロケーター値。

ホスト変数のアドレスが入る。
sqlind
SQLIND
ポインター 予約済み

DESCRIBE PROCEDURE の場合、-1 に設定される。

SQLTYPE が奇数の場合、関連する標識変数のアドレスが入る。 それ以外の場合、このフィールドは使用されない。
sqlname
SQLNAME
VARCHAR(30) 列の非修飾名またはラベルが入る。名前またはラベルが存在しない場合には、長さ 0 のストリングが入る。 名前が 30 バイトを超える場合、名前はバイト境界で切り捨てられる。列名について詳しくは、結果列の名前を参照してください。

DESCRIBE PROCEDURE の場合、SQLNAME には 結果セットを戻すためにストアード・プロシージャーが使用するカーソル名が入る。 SQLNAME の値は、ストアード・プロシージャー がオープンしたカーソルの順番に現れる。

DESCRIBE INPUT の場合、SQLNAME は使用されない。

CCSID またホスト変数配列 (あるいはその両方) の次元情報を入れることができる。

Db2 以下の条件がすべて満たされ、かつ3バイト目と4バイト目がX'0000'ではない場合、SQLNAMEのデータ部分の3バイト目と4バイト目をホスト変数の文字符号集合として解釈します

  • SQLDAIDの6バイト目は「+」です( x'4E' )。
  • SQLTYPEは、ホスト変数が文字列変数であることを示します。
  • SQLNAMEの長さは8です。
  • SQLNAME のデータ部分の先頭 2 バイトが X'0000' である。

SQLNAMEのデータ部分の3バイト目と4バイト目が X'0000' の場合、 Db2 は適切なデフォルトのCCSIDを使用します。

FETCH、OPEN、INSERT、EXECUTEの場合、SQLNAMEの長さが8で、SQLNAMEのデータ部分の最初の2バイトが X'0000' の場合、 Db2 はSQLNAMEフィールドのデータ部分の5バイト目から8バイト目を次のように解釈します

(続き)
sqlname SQLNAME
   
  • 5 バイト目と 6 バイト目: 現行 SQLDA 項目に記述されているホスト変数のタイプを示すフラグ・フィールド。 このフィールドの値は以下のとおり。
    • X'0000' - ホスト変数
    • X'0100' - XML ホスト変数 (XML AS BLOB、XML AS CLOB、XML AS DBCLOB)
    • X'0001' - host-variable 配列
    • X'0101' - XML host-variable 配列
    • X'0002' - 複数行のINSERT文における'n'の値を表す特別なホスト変数
  • 7 バイト目と 8 バイト目: 6 バイト目が X'01' の場合、host-variable-array のディメンションと対応する indicator-array (指定されている場合) を表すバイナリー短精度整数 (ハーフワード)。
注:
  1. この表の第 3 列目は、いくつかの形式の DESCRIBE ステートメントを表しています。