適用対象: SQL Server
Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Server のインスタンスに接続されている場合、SQL Server Native Client ODBC ドライバーは、順方向専用の読み取り専用カーソルのパフォーマンス最適化をサポートします。 高速順方向専用カーソルは、既定の結果セットに類似した方法で、ドライバーとサーバーによって内部的に実装されます。 高速順方向専用カーソルには、パフォーマンスが高いこと以外にも、次のような特性があります。
SQLGetData はサポートされていません。 結果セットの列を、プログラム変数にバインドする必要があります。
サーバーはカーソルの最後に達したことを検出すると、そのカーソルを自動的に閉じます。 アプリケーションは引き続き SQLCloseCursor または SQLFreeStmt(SQL_CLOSE) を呼び出す必要がありますが、ドライバーは閉じる要求をサーバーに送信する必要はありません。 この動作により、ネットワーク経由でのサーバーとのやり取りが抑えられます。
アプリケーションでは、ドライバー固有のステートメント属性 SQL_SOPT_SS_CURSOR_OPTIONS を使用して高速順方向専用カーソルを要求します。 SQL_SOPT_SS_CURSOR_OPTIONS 属性に SQL_CO_FFO を設定すると、高速順方向専用カーソルが有効になりますが、autofetch オプションは有効になりません。 SQL_CO_FFO_AF を設定すると、autofetch オプションも有効になります。 オートフェッチの詳細については、「 ODBC カーソルを使用したオートフェッチの使用」を参照してください。
autofetch オプションを有効にした高速順方向専用カーソルは、サーバーとのやり取りを 1 度だけ行って小さい結果セットを取得する場合に使用できます。 これらの手順では、 n は返される行の数です。
SQL_SOPT_SS_CURSOR_OPTIONS を SQL_CO_FFO_AF に設定します。
SQL_ATTR_ROW_ARRAY_SIZEを n + 1 に設定します。
結果列を n + 1 個の要素の配列にバインドします ( n の場合は安全です + 1 行が実際にフェッチされます)。
SQLExecDirect または SQLExecute でカーソルを開きます。
戻り値の状態がSQL_SUCCESSの場合は、 SQLFreeStmt または SQLCloseCursor を呼び出してカーソルを閉じます。 行のすべてのデータが、バインドされたプログラム変数に格納されます。
これらの手順により、 SQLExecDirect または SQLExecute は、オートフェッチ オプションを有効にしてカーソルを開く要求を送信します。 クライアントからこの要求を 1 つ受け取ると、サーバーでは次の手順が実行されます。
カーソルを開きます。
結果セットを作成してクライアントに行を送信します。
行セットのサイズを結果セットの行数よりも 1 だけ多いサイズに設定したので、サーバーでカーソルが最後まで達したことが検出され、そのカーソルが閉じられます。