首頁 >資料庫 >mysql教程 >如何為沒有遊標的表中的每一行呼叫預存程序?

如何為沒有遊標的表中的每一行呼叫預存程序?

Susan Sarandon
Susan Sarandon原創
2025-01-06 00:03:40577瀏覽

How Can I Call a Stored Procedure for Each Row in a Table Without Cursors?

在沒有遊標的情況下為每一行呼叫預存程序

如果您需要為表中的每一行呼叫預存程序,但是希望避免使用遊標,您可以使用基於集合的方法。以下是一個指導您的程式碼片段:

-- 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

此程式碼迭代表,擷取下一個客戶的 ID,並以 ID 作為參數呼叫預存程序 YOURSPROC。它會繼續這個循環,直到沒有更多的客戶需要處理。

以上是如何為沒有遊標的表中的每一行呼叫預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn