無需遊標即可為表中的每一行執行預存程序
當面臨為表中每一行調用預存程序的任務時對於一個表,很自然地會考慮使用遊標迭代行的方法。但是,不依賴遊標也可以完成此任務。
利用基於集合的方法
在基於集合的方法中,我們的目標是找到一個同時對所有行執行操作的方法。例如,如果我們的目標是更新表中每一行的列,我們可以利用適當 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中文網其他相關文章!