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

このセクションでは、基本および 2 次 SQLVAR のオカレンス内のフィールドについて説明します。

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

 

表 1. SQLVAR のフィールドの説明

C の名前1
COBOL の名前
PL/I の名前
RPG の名前

フィールド
データ・タイプ

DESCRIBE および PREPARE で使用する場合 (データベース・マネージャーがセットする) FETCH、OPEN、CALL、および EXECUTE で使用する場合 (ユーザーがステートメントを実行する前にセットする)

sqltype
SQLTYPE

SMALLINT 列のデータ・タイプと、その列に NULL を入れられるかどうかを指示します。 データ・タイプを示すコードについては、表 1 を参照してください。

特殊タイプの場合、特殊タイプの基本となっているデータ・タイプがこのフィールドに置かれます。基本 SQLVAR には、これが特殊タイプの記述の一部であることを示すものは含まれません。

ホスト変数のデータ・タイプと、その変数に標識変数が指定されているかどうかを指示します。 データ・タイプを示すコードについては、表 1 を参照してください。

sqllen
SQLLEN

SMALLINT 列の長さ属性です。 日付/時刻の列の場合、その値のストリング表現の長さ。 表 1を参照してください。

LOB の場合、その LOB の長さ属性に関係なく、この値は 0 になります。XML の場合、値は 0。拡張 SQLVAR 項目のフィールド SQLLONGLEN には、LOB または XML の長さの属性が入ります。

ホスト変数の長さ属性です。 表 1を参照してください。

LOB の場合、その LOB の長さ属性に関係なく、この値は 0 になります。拡張 SQLVAR 項目内のフィールド SQLLONGLEN には、LOB の長さ属性が入ります。

XML AS BLOB、CLOB、または DBCLOB の場合、値は 0 です。

sqlres
SQLRES

CHAR(12) 予約済み。 SQLDATA の境界合わせ用。 予約済み。 SQLDATA の境界合わせ用。

sqldata
SQLDATA

ポインター ストリング列または XML 列の CCSID (表 1 を参照してください)。 ホスト変数のアドレスが入ります。

LOB ホスト変数の場合、拡張 SQLVAR 内の SQLDATALEN フィールドが NULL であれば、4 バイトの LOB 長を指し、その直後に LOB データが続きます。

拡張 SQLVAR 内の SQLDATALEN フィールドが NULL でない場合は、LOB データを指し、SQLDATALEN フィールドは 4 バイトの LOB 長を指します。

sqlind
SQLIND

ポインター 選択ステートメントの場合、列が、WITH ROW CHANGE COLUMNS 属性を使用した結果追加されたかどうかを以下のように示します。
  • -1 ROW CHANGE TOKEN (特殊)
  • -2 ROW CHANGE TOKEN (特殊ではない)
  • -3 RID
  • -4 RID_BIT
その他の場合には、予約済み。
標識変数のアドレスが入ります。 標識変数がない (SQLTYPE の値が偶数である) 場合は、使用されません。

sqlname
SQLNAME

VARCHAR (30) 修飾のない列名。列に名前がない場合、ストリングは式から構成されて、戻されます。

この名前には大文字小文字の区別があります。全体を区切り文字で囲ん ではなりません。

ホスト変数の CCSID (表 1 を参照) が入ります。

XML データの場合、XML サブタイプを示すために sqlname を以下のように設定できます。

sqlname の長さは 8 です。

バイト 1 および 2: X'0000' にする必要があります。

バイト 3 および 4: CCSID を含めることができます。

バイト 5 および 6: X'0100' XML ホスト変数 (XML AS CLOB、XML AS DBCLOB、XML AS BLOB、XML AS CLOB_FILE、XML AS DBCLOB_FILE、XML AS BLOB_FILE)

バイト 7 および 8: X'0000' にする必要があります。

副次 SQLVAR のオカレンスのフィールド

 

表 2. 拡張 SQLVAR のフィールドの説明

C の名前2
COBOL の名前
PL/I の名前
RPG の名前

フィールド
データ・タイプ

DESCRIBE および PREPARE で使用する場合 (データベース・マネージャーがセットする) FETCH、OPEN、CALL、および EXECUTE で使用する場合 (ユーザーがステートメントを実行する前にセットする)

len.sqllonglen
SQLLONGL
SQLLONGLEN

INTEGER LOB 列の長さ属性。 XML の場合、値は 0。 LOB または XML ホスト変数の長さ属性。 データベース・マネージャーは、これらのデータ・タイプの場合、基本 SQLVAR 内の SQLLEN フィールドは無視します。 長さ属性は、BLOB の場合はバイト数、CLOB、DBCLOB または XML の場合は文字数を示します。
* CHAR(12) 予約済み。 SQLDATALEN の境界合わせ用。 予約済み。 SQLDATALEN の境界合わせ用。
* ポインター 予約済み。 予約済み。

sqldatalen
SQLDATAL
SQLDATALEN

ポインター 使用されません。 LOB ホスト変数にのみ使用されます。

このフィールドの値が NULL ではない場合は、このフィールドは、LOB の実際の長さ (バイト単位) を含む 4 バイトの長さのバッファーを指します (DBCLOB の場合でも)。そして、一致する基本 SQLVAR の SQLDATA フィールドは、LOB データを指します。

このフィールドの値が NULL の場合、LOB の実際の長さは、一致する基本 SQLVAR 内の SQLDATA フィールドが指す最初の 4 バイトに保管され、LOB データは 4 バイトの長さの直後に続きます。 実際の長さは、BLOB または CLOB のバイト数と、DBCLOB の 2 バイトの文字数を示します。

このフィールドが使用されるかどうかに関係なく、フィールド SQLLONGLEN はセットしなければなりません。

sqldatatype_name
SQLTNAME
SQLDATATYPE-NAME

VARCHAR (30) 拡張 SQLVAR の SQLTNAME フィールドは、次のいずれかにセットされます。
  • 特殊タイプの列の場合、データベース・マネージャーはこれを完全修飾特殊タイプ名にセットします。 この修飾名が 30 バイトより長い場合は、切り捨てられます。
  • ラベルの場合、データベース・マネージャーは、これをラベルの最初の 20 バイトにセットします。
  • 列名の場合、データベース・マネージャーはこれを列名にセットします。
使用されません。
1 この欄の小文字の名前は C の名前を示し、大文字の名前は PL/I、COBOL、および RPG の名前を示しています。
2 この欄の小文字の名前は C の名前を示し、最初の大文字の名前は PL/I および RPG の名前を示しています。 2 番目の大文字の名前は COBOL の名前を示しています。