Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Procédure stockée d'appel SQL pour chaque ligne sans utiliser de curseur

D'une manière générale, je recherche toujours une approche basée sur les ensembles (parfois au détriment de la modification du schéma).

Cependant, cet extrait a sa place..

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