適用対象: 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

一般的な規則として、 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.

開発者は、 TargetTypeSQL_C_BINARYを使用して、列を SQL ServerSQL Server固有の C データ型にバインドできます。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

Date 型または time 型の結果列の値は、「 SQL から C への変換」で説明されているように変換されます。Time 列と datetimeoffset 列を対応する構造 (SQL_SS_TIME2_STRUCTおよびSQL_SS_TIMESTAMPOFFSET_STRUCT) として取得するには、 TargetTypeSQL_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 ユーザー定義(型)ODBC」を参照してください。For more information, see Large CLR User-Defined Types (ODBC).

参照See Also

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