SQLBindParameterSQLBindParameter

適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

SQLBindParameterを使用すると、NATIVE client ODBC ドライバー SQL ServerSQL Server にデータを提供するときに、データ変換の負担をなくすことができます。これにより、アプリケーションのクライアントコンポーネントとサーバーコンポーネントの両方でパフォーマンスが大幅に向上します。SQLBindParameter can eliminate the burden of data conversion when used to provide data for the SQL ServerSQL Server Native Client ODBC driver, resulting in significant performance gains for both the client and server components of applications. その他に、概数データ型を挿入または更新するときに有効桁数を失うことが少なくなるという利点もあります。Other benefits include reduced loss of precision when inserting or updating approximate numeric data types.

注意

Char型とwchar型のデータを image 型の列に挿入する場合は、バイナリ形式に変換した後のデータサイズではなく、渡されるデータのサイズが使用されます。When inserting char and wchar type data into an image column, the size of the data being passed in is used, as opposed to the size of the data after conversion to a binary format.

パラメーター配列の配列要素の 1 つで SQL ServerSQL Server Native Client ODBC ドライバー エラーが発生しても、残りの配列要素に対しては引き続きステートメントが実行されます。If the SQL ServerSQL Server Native Client ODBC driver encounters an error on a single array element of an array of parameters, the driver continues to execute the statement for the remaining array elements. アプリケーションがこのステートメントのパラメーター状態要素の配列をバインドした場合は、その配列を基にして、エラーが発生したパラメーター行を特定できます。If the application has bound an array of parameter status elements for the statement, the rows of parameters generating errors can be determined from the array.

SQL ServerSQL Server Native Client ODBC ドライバーを使用する場合は、入力パラメーターのバインド時に SQL_PARAM_INPUT を指定します。When using the SQL ServerSQL Server Native Client ODBC driver, specify SQL_PARAM_INPUT when binding input parameters. OUTPUT キーワードで定義されたストアド プロシージャ パラメーターをバインドするときは、SQL_PARAM_OUTPUT または SQL_PARAM_INPUT_OUTPUT のみを指定してください。Only specify SQL_PARAM_OUTPUT or SQL_PARAM_INPUT_OUTPUT when binding stored procedure parameters defined with the OUTPUT keyword.

SQLRowCountは、バインドされたパラメーター配列の配列要素によってステートメントの実行でエラーが発生した場合に、SQL ServerSQL Server NATIVE Client ODBC ドライバーと互換性がありません。SQLRowCount is unreliable with the SQL ServerSQL Server Native Client ODBC driver if an array element of a bound-parameter array causes an error in statement execution. また、ODBC ステートメント属性 SQL_ATTR_PARAMS_PROCESSED_PTR は、エラーが発生する前に処理された行数を報告します。The ODBC statement attribute SQL_ATTR_PARAMS_PROCESSED_PTR reports the number of rows processed before the error occurs. その後、必要に応じてパラメーター状態配列全体をアプリケーションで調査することにより、正常に実行されたステートメント数を検出できます。The application can then traverse its parameter status array to discover the number of statements successfully executed, if necessary.

SQL 文字型のパラメーターのバインドBinding Parameters for SQL Character Types

渡された SQL データ型が文字型の場合、 Columnsizeは文字数 (バイト数ではない) のサイズになります。If the SQL data type passed in is a character type, ColumnSize is the size in characters (not bytes). データ文字列の長さが8000を超える場合、 ColumnsizeSQL_SS_LENGTH_UNLIMITEDに設定し、SQL 型のサイズに制限がないことを示します。If the length of the data string in bytes is greater than 8000, ColumnSize should be set to SQL_SS_LENGTH_UNLIMITED, indicating that there is no limit to the size of the SQL type.

たとえば、SQL データ型がSQL_WVARCHARの場合、 columnsizeを4000より大きくすることはできません。For instance, if the SQL data type is SQL_WVARCHAR, ColumnSize should not be greater than 4000. 実際のデータ長が4000より大きい場合は、 nvarchar (max) がドライバーによって使用されるようにcolumnsizeSQL_SS_LENGTH_UNLIMITEDに設定する必要があります。If the actual data length is greater than 4000, then ColumnSize should be set to SQL_SS_LENGTH_UNLIMITED so that nvarchar(max) will be used by driver.

SQLBindParameter とテーブル値パラメーターSQLBindParameter and Table-Valued Parameters

他のパラメーターの型と同様に、テーブル値パラメーターは SQLBindParameter によってバインドされます。Like other parameter types, table-valued parameters are bound by SQLBindParameter.

テーブル値パラメーターがバインドされた後、そのパラメーターの列もバインドされます。After a table-valued parameter has been bound, its columns are also bound. 列をバインドするには、 SQLSetStmtAttrを呼び出して、テーブル値パラメーターの序数に SQL_SOPT_SS_PARAM_FOCUS を設定します。To bind the columns, you call SQLSetStmtAttr to set SQL_SOPT_SS_PARAM_FOCUS to the ordinal of the table-valued parameter. 次に、テーブル値パラメーターの各列に対して SQLBindParameter を呼び出します。Then, call SQLBindParameter for each column in the table-valued parameter. 最上位パラメーター バインドに戻るには、SQL_SOPT_SS_PARAM_FOCUS に 0 を設定します。To return to the top-level parameter bindings, set SQL_SOPT_SS_PARAM_FOCUS to 0.

テーブル値パラメーターの記述子フィールドへのパラメーターのマッピングの詳細については、「テーブル値パラメーターと列の値のバインドとデータ転送」を参照してください。For information about mapping parameters to descriptor fields for table-valued parameters, see Binding and Data Transfer of Table-Valued Parameters and Column Values.

テーブル値パラメーターの詳細については、「テーブル値パラメーター (の)ODBC」を参照してください。For more information about table-valued parameters, see Table-Valued Parameters (ODBC).

SQLBindParameter による機能強化された日付と時刻のサポートSQLBindParameter Support for Enhanced Date and Time Features

日付型または時刻型のパラメーター値は、「 C から SQL への変換」で説明されているように変換されます。Parameter values of date/time types are converted as described in Conversions from C to SQL. Timedatetimeoffset型のパラメーターには、対応する構造 (SQL_SS_TIME2_STRUCTおよびSQL_SS_TIMESTAMPOFFSET_STRUCT) が使用されている場合、 SQL_C_DEFAULTまたはSQL_C_BINARYとして指定されたValueTypeが必要です。Note that parameters of type time and datetimeoffset must have ValueType specified as SQL_C_DEFAULT or SQL_C_BINARY if their corresponding structures (SQL_SS_TIME2_STRUCT and SQL_SS_TIMESTAMPOFFSET_STRUCT) are used.

詳細については、「日付と(時刻)の機能強化 ODBC」を参照してください。For more information, see Date and Time Improvements (ODBC).

SQLBindParameter による大きな CLR UDT のサポートSQLBindParameter Support for Large CLR UDTs

SQLBindParameterは、大きな CLR ユーザー定義型 (udt) をサポートしています。SQLBindParameter supports large CLR user-defined types (UDTs). 詳細については、「 LARGE CLR ユーザー定義(型)ODBC」を参照してください。For more information, see Large CLR User-Defined Types (ODBC).

参照See Also

ODBC API 実装の詳細 ODBC API Implementation Details
SQLBindParameter 関数SQLBindParameter Function