Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Call Stored Procedure für jede Zeile ohne Verwendung eines Cursors

Im Allgemeinen suche ich immer nach einem satzbasierten Ansatz (manchmal auf Kosten der Änderung des Schemas).

Dieses Snippet hat jedoch seine Berechtigung..

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