為沒有遊標的表行呼叫預存程序
使用遊標為表中的每一行呼叫儲存程序是一種常見的方法。但是,有一些替代方法可以提供效能優勢和程式碼清晰度。
其中一種方法涉及基於集合的方法,它完全避免了對遊標的需要。這種方法適用於可以直接將行的列作為輸入參數提供給預存程序的場景。
以下程式碼片段示範如何實現此目的:
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中文網其他相關文章!