16.7.2 SQLBindParameter
(1) 機能
SQL文の?パラメタにバッファをバインドします。
(2) 形式
SQLRETURN SQLBindParameter ( SQLHSTMT StatementHandle, /* In */ SQLUSMALLINT ParameterNumber, /* In */ SQLSMALLINT InputOutputType, /* In */ SQLSMALLINT ValueType, /* In */ SQLSMALLINT ParameterType, /* In */ SQLULEN ColumnSize, /* In */ SQLSMALLINT DecimalDigits, /* In */ SQLPOINTER ParameterValuePtr, /* In */ SQLLEN BufferLength, /* In */ SQLLEN * StrLen_or_IndPtr /* In */ )
(3) 引数
- StatementHandle:
-
ステートメントハンドルを指定します。
- ParameterNumber:
-
パラメタ番号を指定します。パラメタの昇順に1から番号が付けられます。
- InputOutputType:
-
次のパラメタの入出力の種類を指定します。
-
SQL_PARAM_INPUT
入力パラメタです。
-
SQL_PARAM_INPUT_OUTPUT
入出力パラメタです。
ただし,入出力パラメタは未サポートのため,SQL_PARAM_INPUTが指定されたとして動作します。
-
- ValueType:
-
パラメタのCデータ型またはSQL_C_DEFAULTを指定します。
SQL_C_DEFAULTを指定すると,デフォルトのCデータ型を仮定します。
サポートしているデータ型については,「15.5.2 ODBCのSQLデータ型とCデータ型の対応」を参照してください。サポートされていないCデータ型を指定した場合はエラーとなります。
- ParameterType:
-
パラメタのODBC SQLデータ型を指定します。
サポートしているデータ型については,「15.5.1 ODBCのSQLデータ型とHADBのデータ型の対応」を参照してください。サポートされていないODBC SQLデータ型を指定した場合はエラーとなります。
- ColumnSize:
-
対応する?パラメタのデータのバイト長を指定します。
ParameterTypeがSQL_CHAR,SQL_VARCHAR,SQL_DECIMAL,SQL_DOUBLE,SQL_FLOATまたはSQL_NUMERICの場合にColumnSizeの値が使用されます。
そのほかのデータ型の場合,この引数の指定は無視されます。
- DecimalDigits:
-
対応する?パラメタの列または式の小数点以下の桁数を指定します。
ParameterTypeがSQL_TYPE_TIME,SQL_TYPE_TIMESTAMP,SQL_DECIMAL,SQL_DOUBLE,SQL_FLOATまたはSQL_NUMERICの場合にDecimalDigitsの値が使用されます。
そのほかのデータ型の場合,この引数の指定は無視されます。
- ParameterValuePtr:
-
パラメタデータのバッファへのポインタを指定します。データ型は,ValueTypeで指定される形式である必要があります。*StrLen_or_IndPtrがSQL_NULL_DATAまたはSQL_DATA_AT_EXECの場合,NULLポインタを指定できます。
SQL_LEN_DATA_AT_EXEC(length)マクロの結果,またはSQL_DATA_AT_EXECの場合,ParameterValuePtrは,パラメタに関連づけられたアプリケーション定義の32ビット値になります。
- BufferLength:
-
文字型のCデータの場合,ParameterValuePtrバッファのバイト長を指定します。そのほかのCデータの場合,この引数の指定は無視されます。
- StrLen_or_IndPtr:
-
次のうちのどれかの値を格納するバッファへのポインタを指定します。
-
*ParameterValuePtrに格納されるパラメタ値の長さ
文字型のCデータ以外の場合,この指定値は使用されません。
-
SQL_NTS
パラメタ値がNULL終端文字の場合に指定します。
-
SQL_NULL_DATA
パラメタ値がNULLの場合に指定します。
-
SQL_LEN_DATA_AT_EXEC(length)マクロの結果
SQLPutDataを使用する場合に指定します。lengthには0または整数を指定します。
-
SQL_DATA_AT_EXEC
SQLPutDataを使用する場合に指定します。
StrLen_or_IndPtrがNULLポインタの場合,ドライバはすべての入力パラメタ値がナル値以外であり,文字データの最後にNULLが付いていると見なします。
-
(4) 戻り値
SQL_SUCCESS,SQL_ERROR,またはSQL_INVALID_HANDLEが返されます。
(5) SQLSTATE
この関数では次のSQLSTATEを返します。
SQLSTATE |
説明 |
備考 |
返却 |
---|---|---|---|
01000 |
一般警告 |
− |
× |
07006 |
データ型属性の制限違反 |
× |
|
07009 |
無効なディスクリプタインデクス |
○ |
|
HY000 |
一般エラー |
× |
|
HY001 |
メモリ割り当てエラー |
ドライバは,関数の実行または完了をサポートするメモリを割り当てられません。 |
○ |
HY003 |
無効なアプリケーションのバッファのデータ型 |
− |
○ |
HY004 |
無効なSQLデータ型 |
○ |
|
HY009 |
NULLポインタの不正使用 |
○ |
|
HY010 |
関数シーケンスエラー |
○ |
|
HY013 |
メモリ管理エラー |
× |
|
HY021 |
ディスクリプタ情報の不一致 |
× |
|
HY090 |
無効な文字列長または無効なバッファ長 |
|
○ |
HY104 |
無効な精度,または無効なスケール値 |
− |
× |
HY105 |
無効なパラメタの種類 |
InputOutputTypeに指定された値は無効です。 |
○ |
HY117 |
接続がサスペンド中 |
− |
× |
HYC00 |
オプション機能は実装されていない |
ValueTypeの値とParameterTypeの値が不整合です。 |
○ |
HYT01 |
接続タイムアウト終了 |
− |
× |
IM001 |
ドライバはこの関数をサポートしていない |
× |
- (凡例)
-
○:HADB ODBCドライバが返すことがあるSQLSTATEです。
×:HADB ODBCドライバが返さないSQLSTATEです。
−:なし。
(6) 注意事項
-
バインドした値は,次のどれかが実行されるまで有効です。
-
再度同じParameterNumberを指定してSQLBindParameterを呼び出す
-
SQL_RESET_PARAMSオプションを指定してSQLFreeStmtを呼び出す
-
SQLSetDescFieldを呼び出してAPDのSQL_DESC_COUNTヘッダフィールドに0を設定する
-
-
オフセットによる再バインドは未サポートです。