SQLNumResultCols

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

実行されたステートメントの場合、SQL Server Native Client ODBC ドライバーはサーバーにアクセスして、結果セット内の列数を報告しません。 この場合、 SQLNumResultCols ではサーバーのラウンドトリップは発生しません。 SQLDescribeColSQLColAttribute と同様に、準備済みで実行されていないステートメントで SQLNumResultCols を呼び出すと、サーバーラウンドトリップが生成されます。

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

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

参照

SQLNumResultCols 関数
ODBC API 実装の詳細