Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere Embedded SQL » SQLDA (SQL descriptor area)

 

SQLDA のホスト変数の記述

SQLDA の sqlvar 構造体がそれぞれ 1 つのホスト変数を記述しています。sqlvar 構造体のフィールドの意味を次に示します。

  • sqltype   この記述子で記述している変数の型。Embedded SQL のデータ型を参照してください。

    低位ビットは NULL 値が可能かどうかを示します。有効な型と定数の定義は sqldef.h ヘッダ・ファイルにあります。

    このフィールドは DESCRIBE 文で設定されます。データベース・サーバにデータを渡したり、データベース・サーバからデータを取り出したりするときに、このフィールドはどの型にでも設定できます。必要な型変換は自動的に行われます。

  • sqllen   変数の長さ。長さが実際に何を意味するかは、型情報と SQLDA の使用法によって決まります。

    データ型 LONG VARCHAR、LONG NVARCHAR、LONG BINARY の場合は、sqllen フィールドの代わりに、データ型の構造体 DT_LONGVARCHAR、DT_LONGNVARCHAR、または DT_LONGBINARY の array_len フィールドが使用されます。

    長さフィールドの詳細については、SQLDA の sqllen フィールドの値を参照してください。

  • sqldata   この変数が占有するメモリへのポインタ。このメモリ領域は sqltype と sqllen フィールドに合致させてください。

    格納フォーマットについては、Embedded SQL のデータ型を参照してください。

    UPDATE 文、INSERT 文では、sqldata ポインタが NULL ポインタの場合、この変数は操作に関係しません。FETCH では、sqldata ポインタが NULL ポインタの場合、データは返されません。つまり、sqldata ポインタが返すカラムは、「バインドされていないカラム」です。

    DESCRIBE 文が LONG NAMES を使用している場合、このフィールドは結果セット・カラムのロング・ネームを保持します。さらに、DESCRIBE 文が DESCRIBE USER TYPES 文の場合は、このフィールドはカラムではなくユーザ定義のデータ型のロング・ネームを保持します。型がベースタイプの場合、フィールドは空です。

  • sqlind   インジケータ値へのポインタ。インジケータ値は short int です。負のインジケータ値は NULL 値を意味します。正のインジケータ値は、この変数が FETCH 文でトランケートされたことを示し、インジケータ値にはトランケートされる前のデータの長さが入ります。conversion_error データベース・オプションを Off に設定した場合、-2 の値は変換エラーを示します。conversion_error オプション [互換性]を参照してください。

    詳細については、インジケータ変数を参照してください。

    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 文の場合、このフィールドはカラムではなくユーザ定義のデータ型のロング・ネームを保持します。型がベースタイプの場合、フィールドは空です。