XSQLDA を理解する

提供: InterBase

動的 SQL での作業 へ戻る


DSQL アプリケーションはすべて、1 つ以上の拡張 SQL ディスクリプタ領域(XSQLDA)を宣言していなければなりません。 XSQLDA 構造体の定義は、ibase.h ヘッダー ファイル内(InterBase include ディレクトリ)にあります。 アプリケーションは、使用する XSQLDA のインスタンスを宣言します。

XSQLDA は、ホスト言語のデータ構造体で、DSQL は、SQL 文の文字列を処理する際に、データベースとの間でデータをやり取りするためにこれを使用します。 XSQLDA には、2つの種類 --- 入力ディスクリプタと出力ディスクリプタ --- があります。 input および output の両ディスクリプタは、XSQLDA 構造体を使用して実装されています。

XSQLDA の 1 つのフィールド、sqlvar は、XSQLVAR 構造体です。 sqlvar は特に重要で、これは、XSQLVAR は、各 input パラメータまたは返される列ごとに定義されなければならないからです。 XSQLDA のように、XSQLVAR は、ibase.h(InterBase の include ディレクトリ内)で定義されている構造体です。

アプリケーションは、先に XSQLVAR のインスタンスを宣言することはありませんが、その代りに、DSQL 文で必要な数の XSQLVAR 構造体用に、記憶領域を動的に確保し、その後、文が実行されたら、適宜それらを解放する必要があります。

次の図は、XSQLDAXSQLVAR の関係を表したものです:

  • 入力 XSQLDA は、1 つの XSQLDA 構造体と、入力パラメータと同じ数の XSQLVAR 構造体で構成されます。
  • 出力 XSQLDA は、1 つの XSQLDA 構造体と、文から返されるデータ項目と同じ数の XSQLVAR 構造体で構成されます。

XSQLDA とそれに関連する XSQLVAR 構造体は、メモリ内の連続した領域に一括して割り当てられます。

isc_dsql_prepare()isc_dsql_describe()isc_dsql_describe_bind() の各関数は、XSQLVAR 構造体の適切な割り当て数を判定するために使用でき、XSQLDA_LENGTH マクロは、適切な大きさの領域をア割り当てるために使用することができます。

XSQLDA_LENGTH マクロの詳細については、「XSQLDA_LENGTH マクロの利用」を参照してください。

トピック