Hitachi

Hitachi Advanced Data Binder AP開発ガイド


19.4.3 a_rdb_SQLBindCols()(検索結果列の関連づけ)

〈この項の構成〉

(1) 機能

検索結果列と,検索結果列から取り出した値を格納する領域の結合(検索結果列の関連づけ)を一括で行います。検索結果列の関連づけを行うと,a_rdb_SQLFetch()でのカーソル操作時に,関連づけられた検索結果列の値が格納されます。

なお,検索結果が列以外の場合もa_rdb_SQLBindCols()を実行できます。

(2) 形式

signed short a_rdb_SQLBindCols
(
  void                          *ConnectionHandle,   /* In  */
  void                          *StatementHandle,    /* In  */
  unsigned short                 ColumnCount,        /* In  */
  a_rdb_SQLColumnInfo_t         *ColumnInfo,         /* In  */
  void                          *Option              /* In  */
)

(3) 引数の説明

ConnectionHandle

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

StatementHandle

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

ColumnCount

値を取り出す列の数を指定します。

a_rdb_SQLNumResultCols()で取得した検索結果列数を指定してください。

ColumnInfo

値格納用領域のアドレスを設定する列情報領域の先頭アドレスを指定します。

a_rdb_SQLColumnInfo_t構造体をColumnCountに指定した数だけ連続させた領域を用意してください。

a_rdb_SQLColumnInfo_t構造体については,「19.7.1 a_rdb_SQLColumnInfo_t構造体(列情報)」を参照してください。

Option

NULLを指定します。

(4) 戻り値

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

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

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

(5) 留意事項

  1. 取得データがCHAR型の場合,a_rdb_SQLColumnInfo_t構造体のデータ格納領域にはデータの末尾にナル文字を1文字付加したものを格納します。ここでのナル文字とは,0x00のことです。

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

  3. a_rdb_SQLColumnInfo_t構造体のデータ格納領域長またはインジケータ値のどちらかを格納する領域には,取得データに応じて,次の表に従って値が設定されます。表中のBLは指定したデータ格納領域長を,DLは取得データを格納するのに必要な領域の大きさ(バイト数)を意味しています。

    表19‒3 データ格納領域長またはインジケータ値のどちらかを格納する領域の値

    項番

    格納データ

    データ構造

    データ型

    BLとDLの関係

    データ格納領域長またはインジケータ値

    1

    ナル値

    任意

    任意

    任意

    a_rdb_SQL_NULL_DATA

    2

    非ナル値

    任意

    任意

    BL=DL

    a_rdb_SQL_NOT_NULL_DATA

    3

    上記以外

    −(SQLエラー)

    注※

    この場合SQLエラーとなり,インジケータに値が設定される処理が行われないで,値が不定になります。

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

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

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

    • a_rdb_SQLNumResultCols()で取得した検索結果列数以外の値を検索結果列数に指定した場合

    • a_rdb_SQLColumnInfo_t構造体のデータ格納領域長に,取得データ格納に必要な領域長以外の値を指定した場合

    • 配列型の検索結果列に対して列結合を実行した場合