在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中文網其他相關文章!