isc_array_put_slice2() の呼び出し
提供:InterBase
配列へデータを書き込む へ戻る
次のステップでは、データを配列または配列スライスに格納するのに必要なステップを説明しています:
- 配列 ID を宣言します:
ISC_QUAD array_id; /* Declare an array ID. */
- 配列 ID を初期化します: 新しい行へ挿入する、または、既存の配列を置き換えるために、新しい配列を作成している場合、シンプルに配列 ID を
NULLに初期化します。array_id = NULL; /* Set handle to NULL before using it */
- 既存の配列を変更する場合には、「配列からデータを読み込む」に記載されているステップに従い、既存の配列 ID を
array_idに読み込みます。
isc_array_put_slice2() を呼び出します。 呼び出しの中で、配列 ID(既存の配列の配列 ID か新規配列のNULL)を、array_id変数に渡します。 また、書き込まれるデータのバッファと、そのデータが属する配列スライスを指定するディスクリプタも渡します。isc_array_put_slice2() が既存の配列の配列 ID で呼び出された場合、指定された配列と同じ特性で新しい配列を作成し、既存の配列データをその新しい配列にコピーします。 そして、配列ディスクリプタで指定された範囲に従い、isc_array_put_slice2() はデータを配列バッファから新しい配列(または配列のスライス)に書き込み、同じarray_id変数で、新しい配列の配列 ID を返します。isc_array_put_slice2() がNULL配列 ID で呼び出された場合、空の配列を新たに作成します。その際、isc_array_put_slice2()に渡された配列ディスクリプタで指定されている、テーブル名および名前の配列型の列に宣言された特性を備えています。 その後、データを配列バッファから新しい配列(または配列のスライス)に書き込み、array_id変数で新しい配列の配列 ID を返します。- 注意したい点は、両者とも、新しい配列が作成され、その配列 ID が
array_id変数で返される点です。 この配列は、UPDATEまたはINSERTの文が実行されて、配列を特定の行の特定の列と関連づけるまでの、一時的なものです。 isc_array_put_slice2()への単一の呼び出しで、すべてのデータを配列に書き込むことができます。 または、isc_array_put_slice2()を複数回呼び出して、データを配列のさまざまなスライスに格納することもできます。 この場合、最初の呼び出し後のisc_array_put_slice2() への各呼び出しは、この一時配列の配列 ID を渡す必要があります。isc_array_put_slice2()が一時配列の配列 ID で呼び出された場合、指定されたデータを、一時配列の指定されたスライスにコピーしますが、新しい配列は作成しません。- 次は、
isc_array_put_slice2()を呼び出す例です: isc_array_put_slice2( status_vector, &db_handle, &trans, &array_id, /* array ID (NULL, or existing array's array ID) */ &desc, /* array descriptor describing where to write data */ hcnt, /* array buffer containing data to write to array */ &len); /* length of array buffer */
- この呼び出しでは、新しい配列を作成し、
hcnt内のデータを新しい配列(または配列のスライス)にコピーし、配列に配列 ID を割り当て、array_idをその配列 ID を参照するようにします。
重要:
array_id は、更新される配列型の列を指定する、UPDATE (or INSERT) 文の入力パラメータの、sqldata フィールドによって参照されている変数でなければなりません。 このため、INSERT または UPDATE 文が実行された際、この新しい配列の配列 ID が、新しい配列を参照するための配列型の列を設定または更新するために使用されます。