Share via


SQLDescribeCol

実行済みのステートメントに対しては、SQL Server Native Client ODBC ドライバでは、サーバーをクエリして結果セット内の列を示す必要はありません。この場合、SQLDescribeCol を呼び出しても、サーバーとのやり取りは行われません。SQLColAttributeSQLNumResultCols と同様に、準備されていても実行されていないステートメントで SQLDescribeCol を呼び出すと、サーバーとのやり取りが行われます。

1 つの Transact-SQL ステートメントまたはステートメント バッチから複数の結果行セットが返される場合、別のテーブルの列を序数で参照したり、結果セット内の別の列を参照することができます。SQLDescribeCol は、セットごとに呼び出す必要があります。結果セットが変更されると、アプリケーションでは、行の結果をフェッチする前に、データ値を再バインドする必要があります。複数の結果セットを返す処理の詳細については、「SQLMoreResults」を参照してください。

SQL Server Native Client ODBC ドライバでは、準備されていても実行されていないステートメントに対して SQLDescribeCol を呼び出すときに、SET FMTONLY ステートメントを使用してサーバーのオーバーヘッドを軽減します。準備された SQL ステートメントのバッチによって複数の結果セットが生成されるときは、最初の結果セットの列属性のみが報告されます。

大きな値データ型の場合、DataTypePtr に返される値は、SQL_VARCHAR、SQL_VARBINARY、SQL_NVARCHAR のいずれかになります。ColumnSizePtr の値 SQL_SS_LENGTH_UNLIMITED は、サイズが "無制限" であることを示します。

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

日付型または時刻型に対して返される値を次に示します。

DataTypePtr

ColumnSizePtr

DecimalDigitsPtr

datetime

SQL_TYPE_TIMESTAMP

23

3

smalldatetime

SQL_TYPE_TIMESTAMP

16

0

date

SQL_TYPE_DATE

10

0

time

SQL_SS_TIME2

8, 10..16

0..7

datetime2

SQL_TYPE_TIMESTAMP

19, 21..27

0..7

datetimeoffset

SQL_SS_TIMESTAMPOFFSET

26, 28..34

0..7

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

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

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

関連項目

概念

その他の技術情報