ホームページ >データベース >mysql チュートリアル >SQL Server の各行に対してストアド プロシージャを実行するためにクエリ結果を反復するにはどうすればよいですか?
SQL Server Cursorsは、クエリ結果を介して反復するためのソリューションを提供します。 例を次に示します:
パフォーマンスに関する考慮事項カーソルは、列ごとの処理に便利ですが、セットベースの操作よりも効率が低くなります。 大規模なデータセットの場合、最初に結果を一時テーブルにロードすることを検討して、カーソルのパフォーマンスを向上させます。 可能であれば、最適なパフォーマンスのためにカーソルを使用しないでください
<code class="language-sql">DECLARE @field1 INT; DECLARE @field2 INT; DECLARE cur CURSOR LOCAL FOR SELECT field1, field2 FROM sometable WHERE someotherfield IS NULL; OPEN cur; FETCH NEXT FROM cur INTO @field1, @field2; WHILE @@FETCH_STATUS = 0 BEGIN -- Execute your stored procedure for each row EXEC uspYourSproc @field1, @field2; FETCH NEXT FROM cur INTO @field1, @field2; END; CLOSE cur; DEALLOCATE cur;</code>
優れた代替品:セットベースの操作実行可能な場合は、ストアドプロシージャループの代わりにロジックを再構築するために単一のステートメントを使用すると、パフォーマンスが大幅に向上します。 通常、セットベースの操作は、列ごとの処理よりもはるかに効率的です。
以上がSQL Server の各行に対してストアド プロシージャを実行するためにクエリ結果を反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。