これは、カーソルを使用せずに行ごとに SQL Call Stored Procedure と同じであると言う前に、私の質問を明確にさせてください。
ストアド プロシージャには副作用があります。実際、各呼び出しの結果がその後の処理に影響するため、これらの副作用がすべてです。
次のように考えてみてください。テーブルにはルール定義が含まれており、proc はそれらのルールを文字通り RBAR として実行し、別のテーブルに変更を加えます。
これらの条件下では、セット操作がどのように可能かわかりません.CROSS APPLYはおそらく副作用のために使用できませんが、実際にはルールテーブルに結果を結合していないため、必要ありません.
ソリューションが本当に RBAR である場合でも、CURSOR を使用しないようにする必要がありますか? READ TOP 1 WHERE Key > @Key で WHILE を使用するのがより良い解決策ですか? なんで?
検索すればするほど、fast_forward read_only カーソルが最も簡単で最速のソリューションであるという結論に達しました。