次の方法で共有


パラメーター値の設定

パラメーターの値を設定するには、アプリケーションはパラメーターにバインドされた変数の値を設定するだけです。 ステートメントが実行される前に設定されている限り、この値が設定されている場合は重要ではありません。 アプリケーションは、変数をバインドする前または後に値を設定でき、必要に応じて何度でも値を変更できます。 ステートメントが実行されると、ドライバーは単に変数の現在の値を取得します。 これは、準備されたステートメントが複数回実行される場合に特に便利です。アプリケーションは、ステートメントが実行されるたびに、一部またはすべての変数に新しい値を設定します。 この例については、このセクションの「 準備された実行」を参照してください。

SQLBindParameter の呼び出しで長さ/インジケーター バッファーがバインドされている場合は、ステートメントを実行する前に、次のいずれかの値に設定する必要があります。

  • バインドされた変数内のデータのバイト長。 ドライバーは、変数が文字またはバイナリ (ValueType がSQL_C_CHARまたはSQL_C_BINARY) の場合にのみ、この長さをチェックします。

  • SQL_NTS。 データは null で終わる文字列です。

  • SQL_NULL_DATA。 データ値は NULL で、ドライバーはバインドされた変数の値を無視します。

  • SQL_DATA_AT_EXECまたはSQL_LEN_DATA_AT_EXEC マクロの結果。 パラメーターの値は 、SQLPutData と共に送信されます。 詳細については、このセクションの後半の 「長いデータの送信」を参照してください。

次の表は、バインドされた変数の値と、アプリケーションがさまざまなパラメーター値に設定する長さ/インジケーター バッファーを示しています。

パラメーター

value
パラメーター

(SQL)

データ型
変数 (C)

データ型
における値

バインド

変数
の値

長さ/指標

バッファー[d]
"ABC" SQL_CHAR SQL_C_CHAR ABC\0[a] SQL_NTSまたは 3
10 SQL_INTEGER SQL_C_SLONG 10 --
10 SQL_INTEGER SQL_C_CHAR 10\0[a] SQL_NTSまたは 2
午後 1 時 SQL_TYPE_TIME SQL_C_TYPE_TIME 13,0,0[b] --
午後 1 時 SQL_TYPE_TIME SQL_C_CHAR {t '13:00:00'}\0[a], [c] SQL_NTSまたは 14
ヌル SQL_SMALLINT SQL_C_SSHORT -- SQL_NULL_DATA

[a] "\0" は null 終端文字を表します。 null 終端文字は、長さ/インジケーター バッファーの値がSQL_NTS場合にのみ必要です。

[b] このリストの数値は、TIME_STRUCT構造体のフィールドに格納されている数値です。

[c] 文字列は ODBC 日付エスケープ句を使用します。 詳細については、「 日付、時刻、およびタイムスタンプ リテラル」を参照してください。

[d] ドライバーは常にこの値をチェックして、SQL_NULL_DATAなどの特殊な値であるかどうかを確認する必要があります。

実行時にドライバーがパラメーター値を使用して行う処理は、ドライバーに依存します。 必要に応じて、ドライバーは、バインドされた変数の C データ型とバイト長の値を、パラメーターの SQL データ型、有効桁数、および小数点以下桁数に変換します。 ほとんどの場合、ドライバーは値をデータ ソースに送信します。 場合によっては、データ ソースにステートメントを送信する前に、値をテキストとして書式設定し、SQL ステートメントに挿入します。