sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Call lagrad procedur för varje rad utan att använda en markör

Generellt sett letar jag alltid efter ett uppsättningsbaserat tillvägagångssätt (ibland på bekostnad av att ändra schemat).

Det här utdraget har dock sin plats...

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


  1. Säkerhetsfunktioner i SQL Server 2017

  2. Databasmodeller för e-handel Del 1:Nyhetsbrevet

  3. Hur Replace() fungerar i SQLite

  4. Hur man uppdaterar Oracle Clob med JDBC