適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

一般的な規則として使用する場合を検討してください。 SQLBindColデータ変換が発生します。As a general rule, consider the implications of using SQLBindCol to cause data conversion. バインドによる変換はクライアント側のプロセスなので、たとえば文字型の列にバインドされた浮動小数点値を取得すると、ドライバーは行をフェッチするときにローカルで浮動小数点型から文字型への変換を行います。Binding conversions are client processes, so, for example, retrieving a floating-point value bound to a character column causes the driver to perform the float-to-character conversion locally when a row is fetched. Transact-SQLTransact-SQL CONVERT 関数を使用すると、データ変換の負荷をサーバーに移すことができます。The Transact-SQLTransact-SQL CONVERT function can be used to place the cost of data conversion on the server.

SQL ServerSQL Server のインスタンスでは、1 回のステートメントの実行に対して複数の結果セット行を返すことができます。An instance of SQL ServerSQL Server can return multiple sets of result rows on a single statement execution. 各結果セットは個別にバインドされている必要があります。Each result set must be bound separately. 複数の結果セットのバインドの詳細については、次を参照してください。 SQLMoreResultsします。For more information about binding for multiple result sets, see SQLMoreResults.

開発者は、列をバインドできますSQL ServerSQL Server-特定の C データ型を使用して、 TargetTypeSQL_C_BINARYします。The developer can bind columns to SQL ServerSQL Server-specific C data types using the TargetType value SQL_C_BINARY. SQL ServerSQL Server 固有の型にバインドされた列は移植できません。Columns bound to SQL ServerSQL Server-specific types are not portable. また、定義済みの SQL ServerSQL Server 固有の ODBC C データ型は DB-Library の型定義と一致するので、アプリケーションを移植する DB-Library 開発者はこの特性を利用できます。The defined SQL ServerSQL Server-specific ODBC C data types match the type definitions for DB-Library, and DB-Library developers porting applications may want to take advantage of this feature.

負荷の高い処理は、レポート データの切り捨て、 SQL ServerSQL Server Native Client ODBC ドライバー。Reporting data truncation is an expensive process for the SQL ServerSQL Server Native Client ODBC driver. バインドされるすべてのデータ バッファーのサイズがデータを返すのに十分なサイズであれば、データの切り捨てを回避できます。You can avoid truncation by ensuring that all bound data buffers are wide enough to return data. 文字データの場合、文字列の終了に既定のドライバーの動作を使用するときは、データ バッファーの大きさに文字列ターミネータの領域も含める必要があります。For character data, the width should include space for a string terminator when the default driver behavior for string termination is used. たとえば、バインディング、 SQL ServerSQL Server char (5) フェッチされるすべての値の切り捨てで結果を 5 つの文字の配列への列。For example, binding a SQL ServerSQL Server char(5) column to an array of five characters results in truncation for every value fetched. 同じ列を 6 文字の配列にバインドすると、NULL ターミネータを格納する文字要素が用意されるため、切り捨てを回避できます。Binding the same column to an array of six characters avoids the truncation by providing a character element in which to store the null terminator. SQLGetData切り捨てることがなく、時間の長い文字やバイナリ データを効率的に取得するために使用できます。SQLGetData can be used to efficiently retrieve long character and binary data without truncation.

ユーザーが指定したバッファーが、列の値全体を保持するために十分な大きさでない場合、大きな値データ型のSQL_SUCCESS_WITH_INFOが返されますと"文字列データです。右側が切り捨てられました"警告が表示されます。For large value data types, if the user supplied buffer isn't large enough to hold the entire value of the column, SQL_SUCCESS_WITH_INFO is returned and the "string data; right truncation" warning is issued. StrLen_or_IndPtr引数は、バッファーに格納されている文字とバイト数を指定します。The StrLen_or_IndPtr argument will contain the number of chars/bytes stored in the buffer.

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

説明されているように、日付/時刻型の結果列の値が変換されますSQL から C への変換します。それらに対応する構造体としての時刻、および datetimeoffset の列を取得する (SQL_SS_TIME2_STRUCTSQL_SS_TIMESTAMPOFFSET_STRUCT)、 TargetTypeとして指定する必要がありますSQL_C_DEFAULTまたはSQL_C_BINARYします。Result column values of date/time types are converted as described in Conversions from SQL to C. Note that to retrieve time and datetimeoffset columns as their corresponding structures (SQL_SS_TIME2_STRUCT and SQL_SS_TIMESTAMPOFFSET_STRUCT), TargetType must be specified as SQL_C_DEFAULT or SQL_C_BINARY.

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

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

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

参照See Also

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