カーソルを使用しないテーブル行のストアド プロシージャの呼び出し
カーソルを使用してテーブル内の各行のストアド プロシージャを呼び出すのが一般的な方法です。ただし、パフォーマンス上の利点とコードの明瞭さを提供できる代替方法があります。
そのような方法の 1 つは、カーソルの必要性を完全に回避するセットベースのアプローチを含みます。このアプローチは、行の列を入力パラメーターとしてストアド プロシージャに直接指定できるシナリオに適しています。
次のコード スニペットは、これを実現する方法を示しています。
SQL
-- Declare & init (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
このスニペットは、変数 @CustomerID を 0 に初期化することから始まります。その後、WHILE ループに入ります。 CustomerID の昇順で顧客の行を反復し、各反復で次の顧客の ID を @CustomerID に取得します。
顧客の ID が取得されると、その ID をパラメーターとして使用してストアド プロシージャ YOURSPROC が呼び出されます。ループは、テーブル内で顧客が見つからなくなるまで継続します。
このアプローチを使用すると、特定のシナリオでカーソルのパフォーマンスが向上し、より簡潔で読みやすいコード構造も提供されます。
以上がカーソルを使用せずにテーブルの各行のストアド プロシージャを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。