SQLDA の sqlvar 構造体がそれぞれ 1 つのホスト変数を記述しています。sqlvar 構造体のフィールドの意味を次に示します。
sqltype この記述子で記述している変数の型。
低位ビットは NULL 値が可能かどうかを示します。有効な型と定数の定義は sqldef.h ヘッダファイルにあります。
このフィールドは DESCRIBE 文で設定されます。データベースサーバにデータを渡したり、データベースサーバからデータを取り出したりするときに、このフィールドはどの型にでも設定できます。必要な型変換は自動的に行われます。
sqllen 変数の長さ。sqllen 値は a_sql_len 型です。長さが実際に何を意味するかは、型情報と SQLDA の使用法によって決まります。
データ型 LONG VARCHAR、LONG NVARCHAR、LONG BINARY の場合は、sqllen フィールドの代わりに、データ型の構造体 DT_LONGVARCHAR、DT_LONGNVARCHAR、または DT_LONGBINARY の array_len フィールドが使用されます。
sqldata この変数が占有するメモリへのポインタ。このメモリ領域は sqltype と sqllen フィールドに合致させてください。
UPDATE 文、INSERT 文では、sqldata ポインタが NULL ポインタの場合、この変数は操作に関係しません。FETCH では、sqldata ポインタが NULL ポインタの場合、データは返されません。つまり、sqldata ポインタが返すカラムは、「バインドされていないカラム」です。
DESCRIBE 文が LONG NAMES を使用している場合、このフィールドは結果セットカラムのロングネームを保持します。さらに、DESCRIBE 文が DESCRIBE USER TYPES 文の場合は、このフィールドはカラムではなくユーザ定義のデータ型のロングネームを保持します。型がベースタイプの場合、フィールドは空です。
sqlind インジケータ値へのポインタ。インジケータ値は a_sql_len 型です。負のインジケータ値は NULL 値を意味します。正のインジケータ値は、この変数が FETCH 文でトランケートされたことを示し、インジケータ値にはトランケートされる前のデータの長さが入ります。conversion_error データベースオプションを Off に設定した場合、-2 の値は変換エラーを示します。
sqlind ポインタが NULL ポインタの場合、このホスト変数に対応するインジケータ変数はありません。
sqlind フィールドは、DESCRIBE 文でパラメータタイプを示すのにも使用されます。ユーザ定義のデータ型の場合、このフィールドは DT_HAS_USERTYPE_INFO に設定されます。この場合、DESCRIBE USER TYPES を実行すると、ユーザ定義のデータ型についての情報を取得できます。
sqlname 次のような VARCHAR に似た構造体。
struct sqlname { short int length; char data[ SQL_MAX_NAME_LEN ]; }; |
DESCRIBE 文によって設定され、それ以外では使用されません。このフィールドは DESCRIBE 文のフォーマットによって意味が異なります。
SELECT LIST 名前データバッファには SELECT リストの対応する項目のカラム見出しが入ります。
BIND VARIABLES 名前データバッファにはバインド変数として使用されたホスト変数名が入ります。無名のパラメータマーカが使用されている場合は、"?" が入ります。
DESCRIBE SELECT LIST 文では、指定のインジケータ変数にはすべて、SELECT リスト項目が更新可能かどうかを示すフラグが設定されます。このフラグの詳細は、sqldef.h ヘッダファイルにあります。
DESCRIBE 文が DESCRIBE USER TYPES 文の場合、このフィールドはカラムではなくユーザ定義のデータ型のロングネームを保持します。型がベースタイプの場合、フィールドは空です。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |