Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Съхранена процедура за SQL повикване за всеки ред без използване на курсор

Най-общо казано винаги търся подход, базиран на набори (понякога за сметка на промяна на схемата).

Този фрагмент обаче има своето място...

-- 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избор на инструмент за наблюдение на SQL Server, който да отговаря на вашите нужди

  2. Преглед на мисии Най-новата услуга за наблюдение на база данни - Spotlight Cloud

  3. Процесори от серия AMD EPYC 7002 и SQL сървър

  4. TABLESAMPLE връща грешен брой редове?

  5. Търсенето на пълен текст не работи, ако е включена спираща дума, въпреки че списъкът със стоп думи е празен