SQL でのストアド プロシージャ呼び出しにカーソルを使用する代替手段
カーソルを使用する代わりに、ストアド プロシージャを実行するためのセットベースのアプローチを検討してください。テーブル内の各行のプロシージャ。これにより、カーソルの必要性がなくなり、パフォーマンスが向上します。
ただし、一部のシナリオでは、カーソルが依然として避けられません。このような場合、次のスニペットは実行可能な解決策を提供します。
-- Declare & initialize variables (SQL Server 2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate through customers WHILE (1 = 1) BEGIN -- Retrieve customer ID SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if all customers have been processed IF @@ROWCOUNT = 0 BREAK; -- Invoke stored procedure EXEC dbo.YOURSPROC @CustomerId END
このスニペットは顧客 ID に基づいて顧客を反復処理し、各顧客のデータがパラメーターとして YOURSPROC ストアド プロシージャに渡されるようにします。
以上がSQL でストアド プロシージャを呼び出すときにカーソルを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。