小编典典

不使用游标的每一行的 SQL 调用存储过程

all

如何在不 使用游标的情况下为表中的每一行调用存储过程,其中行的列是 sp 的输入参数?


阅读 61

收藏
2022-07-28

共1个答案

小编典典

一般来说,我总是寻找一种基于集合的方法(有时以改变架构为代价)。

但是,这个片段确实有它的位置..

-- 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
2022-07-28