Hitachi

Hitachi Advanced Data Binder AP開発ガイド


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.3.2 ODBCのSQLデータ型とCデータ型の対応」を参照してください。サポートされていないCデータ型を指定した場合はエラーとなります。

ParameterType

パラメタのODBC SQLデータ型を指定します。

サポートしているデータ型については,「15.3.1 ODBCのSQLデータ型とHADBのデータ型の対応」を参照してください。サポートされていないODBC SQLデータ型を指定した場合はエラーとなります。

ColumnSize

対応する?パラメタのデータのバイト長を指定します。

ParameterTypeSQL_CHARSQL_VARCHARSQL_DECIMALSQL_DOUBLESQL_FLOATまたはSQL_NUMERICの場合にColumnSizeの値が使用されます。

そのほかのデータ型の場合,この引数の指定は無視されます。

DecimalDigits

対応する?パラメタの列または式の小数点以下の桁数を指定します。

ParameterTypeSQL_TYPE_TIMESQL_TYPE_TIMESTAMPSQL_DECIMALSQL_DOUBLESQL_FLOATまたはSQL_NUMERICの場合にDecimalDigitsの値が使用されます。

そのほかのデータ型の場合,この引数の指定は無視されます。

ParameterValuePtr

パラメタデータのバッファへのポインタを指定します。データ型は,ValueTypeで指定される形式である必要があります。*StrLen_or_IndPtrSQL_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_SUCCESSSQL_ERROR,またはSQL_INVALID_HANDLEが返されます。

(5) SQLSTATE

この関数では次のSQLSTATEを返します。

SQLSTATE

説明

備考

返却

01000

一般警告

×

07006

データ型属性の制限違反

×

07009

無効なディスクリプタインデクス

HY000

一般エラー

×

HY001

メモリ割り当てエラー

ドライバは,関数の実行または完了をサポートするメモリを割り当てられません。

HY003

無効なアプリケーションのバッファのデータ型

HY004

無効なSQLデータ型

HY009

NULLポインタの不正使用

HY010

関数シーケンスエラー

HY013

メモリ管理エラー

×

HY021

ディスクリプタ情報の不一致

×

HY090

無効な文字列長または無効なバッファ長

  • BufferLengthの値に0より小さい値が指定されています。

  • SQLBindParameterにNULLポインタが指定されていますが,パラメタ長が0,SQL_NULL_DATAまたはSQL_DATA_AT_EXECのどれにも一致していないか,SQL_LEN_DATA_AT_EXEC_OFFSETより大きい値になっています。

HY104

無効な精度,または無効なスケール値

×

HY105

無効なパラメタの種類

InputOutputTypeに指定された値は無効です。

HY117

接続がサスペンド中

×

HYC00

オプション機能は実装されていない

ValueTypeの値とParameterTypeの値が不整合です。

HYT01

接続タイムアウト終了

×

IM001

ドライバはこの関数をサポートしていない

×

(凡例)

○:HADB ODBCドライバが返すことがあるSQLSTATEです。

×:HADB ODBCドライバが返さないSQLSTATEです。

−:なし。

(6) 注意事項