SQLDescribeCol

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

実行されるステートメントの場合、SQL Server Native Client ODBC ドライバーは、サーバーにクエリを実行して結果セット内の列を記述する必要はありません。 この場合、 SQLDescribeCol ではサーバーのラウンドトリップは発生しません。 SQLColAttribute や SQLNumResultCols同様に、準備されたが実行されていないステートメントで SQLDescribeCol を呼び出すと、サーバーラウンドトリップが生成されます。

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

準備された SQL ステートメントのバッチによって複数の結果セットが生成されるときは、最初の結果セットの列属性のみが報告されます。

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

SQL Server 2012 (11.x) 以降のデータベース エンジンの機能強化により、SQLDescribeCol は予想される結果のより正確な説明を取得できます。 これらのより正確な結果は、以前のバージョンの SQL Server の SQLDescribeCol によって返される値とは異なる場合があります。 詳細については、「メタデータの検出」を参照してください。

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

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

Attribute DataTypePtr ColumnSizePtr DecimalDigitsPtr
datetime SQL_TYPE_TIMESTAMP 23 3
smalldatetime SQL_TYPE_TIMESTAMP 16 0
日付 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)」を参照してください

参照

SQLDescribeCol 関数
ODBC API 実装の詳細