Hitachi

Hitachi Advanced Data Binder AP開発ガイド


19.4.2 a_rdb_SQLBindArrayParams()(?パラメタの一括関連づけ)

〈この項の構成〉

(1) 機能

SQL文中の?パラメタの値を設定する領域の結合(関連づけ)を行います。

次に示すSQL文中の,複数組の?パラメタの値をまとめて結合します。

?パラメタの値の一括転送を行う場合に,このCLI関数を使用します。?パラメタの値の一括転送については,「5.15 ?パラメタの値の一括転送」を参照してください。

(2) 形式

signed short a_rdb_SQLBindArrayParams
(
  void                          *ConnectionHandle,  /* In  */
  void                          *StatementHandle,   /* In  */
  int                            ArrayCount,        /* In  */
  unsigned short                 ParameterCount,    /* In  */
  a_rdb_SQLParameterInfo_t      *ParameterInfo[],   /* In  */
  unsigned long long             RowCount[],        /* Out */
  void                          *Option             /* In  */
)

(3) 引数の説明

ConnectionHandle

コネクションハンドルを指定します。

StatementHandle

文ハンドルを指定します。

ArrayCount

ParameterInfoおよびRowCountの配列数を指定します。

ParameterCount

値を与える?パラメタの数を指定します。

a_rdb_SQLNumParams()で取得した?パラメタの数を指定してください。

ParameterInfo[]

値の格納領域のアドレスを設定するパラメタ情報領域のアドレス配列を指定します。配列1つごとにa_rdb_SQLParameterInfo_t構造体をParameterCountに指定した数だけ連続させた領域を用意し,その領域の先頭アドレスを各配列値として指定してください。

a_rdb_SQLParameterInfo_t構造体については,「19.7.5 a_rdb_SQLParameterInfo_t構造体(パラメタ情報)」を参照してください。

RowCount[]

SQL文の処理結果行数を格納する配列の先頭アドレスを指定します。NULLを指定した場合は,処理結果行数は取得されません。

a_rdb_SQLExecute()によるSQL文の実行後,各配列には各組の?パラメタの値を入力して実行した処理結果行数が格納されます。

なお,SQL文の実行が途中でエラーとなった場合,成功したところまでの処理結果行数が格納されます。ただし,SQL文のエラーによってロールバックが実行された場合,すべての配列に0が設定されます。

Option

NULLを指定します。

(4) 戻り値

  1. a_rdb_SQLBindArrayParams()が正常に終了した場合,a_rdb_RC_SQL_SUCCESSが返却されます。

  2. ?パラメタの関連づけには成功したが,クライアントメッセージログファイルを格納しているディスクが満杯になった場合,a_rdb_RC_SQL_WARNINGが返却されます。

  3. クライアントメッセージログファイルにメッセージが出力できない場合にエラーが発生したときは,エラー要因コードが返却されます。エラー要因コードについては,「19.8 CLI関数の戻り値」を参照してください。

(5) 留意事項

  1. a_rdb_SQLParameterInfo_t構造体のデータ格納領域の先頭アドレスに対して境界位置調整を行ってください。境界位置調整については,「18.2.6 CLI関数を使用する場合の留意事項」の「(2) 境界位置調整」を参照してください。

  2. a_rdb_SQLBindArrayParams()で?パラメタを関連づけしてa_rdb_SQLExecute()を実行した場合,SQL文がエラーにならないかぎり処理が続行されます。そのため,処理の途中で処理結果行数が0となるような?パラメタの値の組が設定されている場合でも処理が続行されます。

  3. a_rdb_SQLResultInfo_t構造体のRowCountには,RowCount[]配列に格納された処理結果行数の合計が格納されます。

  4. 次に示す場合,a_rdb_SQLBindArrayParams()は実行できません。

    • コネクションが確立されていない場合

    • 無効な文ハンドルを指定した場合

    • 配列数に0以下の値を指定した場合

    • ?パラメタ数に,a_rdb_SQLNumParams()で取得した?パラメタの数以外の値を指定した場合

    • DELETE文,INSERT文,またはUPDATE文以外のSQL文に対してa_rdb_SQLBindArrayParams()を実行しようとした場合