Hitachi

Hitachi Advanced Data Binder AP開発ガイド


18.2.3 ?パラメタを使用する場合

?パラメタを指定したSQL文を実行する場合は,SQL文の割り当て,SQL文の前処理,?パラメタの設定,およびSQL文の実行という手続きを行います。?パラメタを指定したときのSQL文実行の流れを次の図に示します。

図18‒6 ?パラメタを指定したときのSQL文実行の流れ

[図データ]

文ハンドルの確保,SQL文の前処理,およびSQL文の実行方法については,「18.2.2 データを参照する場合」で説明した方法と同じです。ここでは,?パラメタ数の取得,?パラメタ情報の取得,入力データのSQLのデータ型への変換,および?パラメタの設定方法について説明します。

〈この項の構成〉

(1) ?パラメタ数の取得

動的にSQL文を実行するなど,APの作成時に?パラメタの数が確定していない場合は,a_rdb_SQLNumParams()を使用して?パラメタ数を取得します。?パラメタ数の取得例を次に示します。

?パラメタ数の取得例
/* ?パラメタ数の取得 */
rtnc = a_rdb_SQLNumParams(hCnct,
                          hStmt,
                          &paramCount,    /* ?パラメタの数*/
                          NULL) ;

a_rdb_SQLNumParams()については,「19.4.12 a_rdb_SQLNumParams()(?パラメタ数の取得)」を参照してください。

(2) ?パラメタ情報の取得

動的にSQL文を実行するなど,APの作成時に?パラメタのデータ型やデータ長などの情報が確定していない場合は,a_rdb_SQLDescribeParams()を使用して?パラメタの情報を取得します。a_rdb_SQLDescribeParams()で取得できる情報は次のとおりです。

?パラメタ情報の取得例を次に示します。

?パラメタ情報の取得例
/* ?パラメタ情報の取得 */
rtnc = a_rdb_SQLDescribeParams(hCnct,
                               hStmt,
                               paramCount,       /* ?パラメタの数 */
                               &(paramInfo[0]),  /* 全?パラメタ情報返却領域 */
                               NULL) ;

a_rdb_SQLDescribeParams()については,「19.4.7 a_rdb_SQLDescribeParams()(?パラメタの情報取得)」を参照してください。

(3) 入力データのSQLのデータ型への変換

?パラメタの入力データが,SQLのDECIMALNUMERICBINARY型,VARBINARY型,DATE型,TIME型,またはTIMESTAMP型のデータの場合,CLI関数を使用してC言語またはC++言語の文字列データから該当するデータ型に変換できます。C言語またはC++言語の文字列データをDECIMAL型のデータに変換する例を次に示します。

データの変換例
#define PRECISION 6
#define SCALE 3
 
char data_char[]="-123.567";
unsigned char data_decimal[4];
 
/* DECIMAL型データに変換 */
rtnc = a_rdb_CNV_charDECIMAL(data_char,          /* 変換するデータの先頭アドレス */
                            (unsigned short)strlen(data_char), /* 変換するデータ長 */
                            PRECISION,           /* 入力データの精度 */
                            SCALE,               /* 入力データの位取り */
                            data_decimal,        /* 入力データの格納領域アドレス */
                            4,                   /* 入力データの格納領域長 */
                            NULL);

(4) ?パラメタの設定

a_rdb_SQLBindParams()を使用して?パラメタを設定します。設定が正常に完了すると,戻り値としてa_rdb_RC_SQL_SUCCESSが返されます。?パラメタの設定例を次に示します。

?パラメタの設定例
/* ?パラメタの設定 */
rtnc = a_rdb_SQLBindParams(hCnct,
                           hStmt,
                           paramCount,       /* ?パラメタの数 */
                           &(paramInfo[0]),  /* 全?パラメタ設定用領域 */
                           NULL) ;

a_rdb_SQLBindParams()については,「19.4.4 a_rdb_SQLBindParams()(?パラメタの関連づけ)」を参照してください。