Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Używanie CTE jako pętli blokowej ?

Generalnie nie możesz.

Dotyczy tylko następnej instrukcji. Możesz zdefiniować widok z tą samą definicją, jeśli chcesz ponownie użyć definicji dla wielu instrukcji lub samodzielnie zmaterializuj je w tymczasowej zmiennej tabeli/tabeli, aby ponownie wykorzystać wyniki .

Jednak w konkretnym przypadku w Twoim pytaniu możesz to wszystko zrobić w jednym oświadczeniu.

WITH cte
     AS (SELECT 1 AS n
         UNION ALL
         SELECT n + 1
         FROM   cte
         WHERE  n + 1 <= 10)
INSERT INTO tbl1
            (id)
OUTPUT      INSERTED.id
INTO tbl2(id)
SELECT n
FROM   cte 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Standardowe ciągi formatu daty/godziny obsługiwane przez FORMAT() w SQL Server

  2. Jak wykryć, czy procedura składowana już istnieje?

  3. Jak przekonwertować format daty systemowej na dd/mm/rr w SQL Server 2008 R2?

  4. Konwertuj smallint na czas

  5. połącz serwer sql 2005/2008 przez internet