多くの場合、データベース タスクでは、SQL クエリによって取得された行ごとにストアド プロシージャを実行する必要があります。この記事では、反復行処理のためのデータベース メカニズムであるカーソルを使用したソリューションの概要を説明します。
カーソルはポインターとして機能し、結果セットへの順次アクセスを可能にします。 これにより、クエリ結果をループし、行ごとにストアド プロシージャを実行し、返されたデータや後続のアクションを処理できます。
MS SQL でカーソルを使用する例を次に示します:
<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 the stored procedure for each row EXEC uspYourSproc @field1, @field2; FETCH NEXT FROM cur INTO @field1, @field2; END; CLOSE cur; DEALLOCATE cur;</code>
このコードは、sometable
が NULL である someotherfield
内の行を反復処理します。 各行に対して、uspYourSproc
と field1
をパラメータとして field2
が実行されます。
ループよりは効率的です。WHILE
代替方法
ステートメントに直接統合することが、多くの場合最も効率的なアプローチです。 これにより、反復処理のオーバーヘッドが回避されます。UPDATE
以上がSQL クエリによって返される各行に対してストアド プロシージャを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。