ホームページ >データベース >mysql チュートリアル >カーソルなしでテーブルの各行に対してストアド プロシージャを実行できますか?
カーソルを使用せずにテーブルの行ごとにストアド プロシージャを実行する
テーブル内のすべての行に対してストアド プロシージャを呼び出すタスクに直面したときテーブルの場合、カーソルを使用して行を反復処理するアプローチを考慮するのが自然です。ただし、カーソルに依存せずにこのタスクを達成することは可能です。
セットベースのアプローチの利用
セットベースのアプローチでは、すべての行に対して同時に操作を実行する方法。たとえば、テーブル内のすべての行の列を更新することが目標の場合、適切な WHERE 句を含む UPDATE ステートメントを利用して、関連するレコードを一度に変更できます。
特定のケース:行列の反復
ただし、行の列をストアド プロシージャの入力パラメーターとして使用する必要があるシナリオを扱う場合、若干異なるアプローチが必要です。提供された回答で説明されているように:
コード サンプル
提供されたコード スニペットは、このアプローチの実装方法を示しています。
-- Declare & initialize (2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate over all customers WHILE (1 = 1) BEGIN -- Get next customerId SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if no more customers IF @@ROWCOUNT = 0 BREAK; -- call your sproc EXEC dbo.YOURSPROC @CustomerId END
以上がカーソルなしでテーブルの各行に対してストアド プロシージャを実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。