SQLNumResultCols
SQL Server Native Client ODBC ドライバーでは、実行済みのステートメントについては、サーバーにアクセスして結果セットの列数を示すことはありません。 この場合、SQLNumResultCols を呼び出しても、サーバーとのやり取りは行われません。 SQLDescribeCol や SQLColAttribute と同様に、準備されていても実行されていないステートメントで SQLNumResultCols を呼び出すと、サーバーとのやり取りが行われます。
Transact-SQL ステートメントまたはステートメント バッチが複数の結果行セットを返すときは、結果セットの列数を報告する場合、あるセットから別のセットへ結果セットを変更することができます。 SQLNumResultCols は、セットごとに呼び出す必要があります。 列数が変化すると、アプリケーションでは行の結果をフェッチする前に、データ値を再バインドする必要があります。 複数の結果セットを返す処理の詳細については、「SQLMoreResults」を参照してください。
SQL Server 2012 以降のデータベース エンジンの機能強化により、期待される結果のより正確な記述を SQLNumResultCols で取得できるようになりました。 こうした正確性の増した結果は、以前のバージョンの SQL Server の SQLNumResultCols によって返される結果とは異なる可能性があります。 詳細については、「メタデータの検出」を参照してください。