sp_cursorexecute (Transact-SQL)
sp_cursorprepare によって作成された実行プランに基づいてカーソルを作成してデータを設定します。このプロシージャは、sp_cursorprepare と組み合わせると sp_cursoropen と同じ機能になりますが、2 つのフェーズに分割されたものになります。sp_cursorexecute は、ID = 4 を指定した場合に表形式のデータ ストリーム (TDS) パケットで呼び出されます。
構文
sp_cursorexecute
prepared_handle
,
cursor
[ , scrollopt[ OUTPUT ]
[ , ccopt[ OUTPUT ]
[ ,rowcount OUTPUT [ ,bound param][,...n]]]]]
引数
prepared_handle
sp_cursorprepare から返される、準備されたステートメントのハンドル値です。prepared_handle は、int 入力値を必要とする必須パラメーターです。cursor
SQL Server によって生成されるカーソル識別子です。cursor は必須パラメーターで、このカーソルに対して操作を実行する後続のすべてのプロシージャ (sp_cursorfetch など) に渡す必要があります。scrollopt
スクロール オプションです。scrollopt は省略可能なパラメーターで、int 入力値を必要とします。sp_cursorexecute の scrollopt パラメーターで指定できる値は、sp_cursoropen と同じです。注 PARAMETERIZED_STMT 値はサポートされていません。
重要 scrollopt 値を指定しなかった場合、sp_cursorprepare で指定した scrollopt 値に関係なく、既定値は KEYSET になります。
ccopt
同時実行制御のオプションです。ccopt は省略可能なパラメーターで、int 入力値を必要とします。sp_cursorexecute の ccopt パラメーターで指定できる値は、sp_cursoropen と同じです。重要 ccopt 値を指定しなかった場合、sp_cursorprepare で指定した ccopt 値に関係なく、既定値は OPTIMISTIC になります。
rowcount
AUTO_FETCH で使用するフェッチ バッファー行の数を指定する省略可能なパラメーターです。既定値は 20 行です。rowcount は、入力値として割り当てられる場合と戻り値として割り当てられる場合とでは動作が異なります。入力値
戻り値
AUTO_FETCH が FAST_FORWARD カーソルと共に指定されている場合、rowcount はフェッチ バッファーに格納する行の数を表します。
結果セット内の行の数を表します。scrollopt AUTO_FETCH の値が指定されている場合、rowcount はフェッチ バッファーにフェッチされた行の数を返します。
bound_param
追加パラメーターをオプションで使用することを示します。注 5 番目より後のパラメーターは、入力パラメーターとしてステートメント プランに渡されます。
戻り値
rowcount で次の値が返される場合があります。
値 |
説明 |
---|---|
-1 |
行数が不明です。 |
-n |
非同期設定が有効になっています。 |
説明
scrollopt パラメーターと ccopt パラメーター
scrollopt と ccopt は、キャッシュされたプランがサーバー キャッシュのためにプリエンプトされる場合に便利です。この場合、ステートメントを識別する準備済みハンドルを再コンパイルする必要があります。scrollopt パラメーターと ccopt パラメーターの値は、sp_cursorprepare に対する元の要求で送信された値と一致する必要があります。
注 |
---|
scrollopt に PARAMETERIZED_STMT を割り当てないでください。 |
一致する値を指定しないと、プランが再コンパイルされて、準備して実行する操作が無効になります。
RPC と TDS に関する考慮事項
RPC の RETURN_METADATA 入力フラグを 1 に設定すると、カーソル選択リストのメタデータを TDS ストリームで返すように要求できます。