次の方法で共有


SQLBindCol

一般的な規則として、 SQLBindCol を使用してデータ変換を行う場合の影響を考慮してください。 バインドによる変換はクライアント側のプロセスなので、たとえば文字型の列にバインドされた浮動小数点値を取得すると、ドライバーは行をフェッチするときにローカルで浮動小数点型から文字型への変換を行います。 Transact-SQL CONVERT 関数を使用すると、データ変換のコストをサーバーに配置できます。

SQL Serverのインスタンスは、1 回のステートメント実行で複数の結果行セットを返すことができます。 各結果セットは個別にバインドされている必要があります。 複数の結果セットのバインドの詳細については、「 SQLMoreResults」を参照してください。

開発者は、TargetTypeSQL_C_BINARYを使用してSQL Server固有の C データ型に列をバインドできます。 SQL Server固有の型にバインドされた列は移植できません。 定義されたSQL Server固有の ODBC C データ型は DB-Library の型定義と一致し、アプリケーションを移植DB-Library開発者はこの機能を利用できます。

レポート データの切り捨ては、SQL Server Native Client ODBC ドライバーにとってコストの高いプロセスです。 バインドされるすべてのデータ バッファーのサイズがデータを返すのに十分なサイズであれば、データの切り捨てを回避できます。 文字データの場合、文字列の終了に既定のドライバーの動作を使用するときは、データ バッファーの大きさに文字列ターミネータの領域も含める必要があります。 たとえば、SQL Server char(5) 列を 5 文字の配列にバインドすると、フェッチされる値ごとに切り捨てられます。 同じ列を 6 文字の配列にバインドすると、NULL ターミネータを格納する文字要素が用意されるため、切り捨てを回避できます。 SQLGetData を使用すると、切り捨てなしで長い文字とバイナリ データを効率的に取得できます。

大きな値のデータ型の場合、ユーザーが指定したバッファーが列の値全体を保持するのに十分な大きさでない場合は、 SQL_SUCCESS_WITH_INFO が返され、"string data;右切り捨て" 警告が発行されます。 StrLen_or_IndPtr 引数には、バッファー内に格納されている文字数とバイト数が含まれます。

SQLBindCol による機能強化された日付と時刻のサポート

日付/時刻型の結果列の値は、「SQL から C への変換」の説明に従って変換されます。time 列と datetimeoffset 列を対応する構造体 (SQL_SS_TIME2_STRUCT および SQL_SS_TIMESTAMPOFFSET_STRUCT) として取得するには、TargetType を または SQL_C_BINARYとしてSQL_C_DEFAULT指定する必要があることに注意してください。

詳細については、「 日付と時刻の機能強化 (ODBC)」を参照してください。

SQLBindCol による大きな CLR UDT のサポート

SQLBindCol では 、大きな CLR ユーザー定義型 (UDT) がサポートされています。 詳細については、「 大きな CLR User-Defined型 (ODBC)」を参照してください。

参照

SQLBindCol 関数
ODBC API 実装の詳細