首页 >数据库 >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