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

Използване на CTE като блокова верига?

Като цяло не можете.

Валидно е само за следващото изявление. Можете да дефинирате изглед със същата дефиниция, ако искате да използвате повторно дефиницията за множество изрази или го материализирайте сами във временна таблица/променлива на таблица, за да използвате повторно резултатите .

За конкретния случай във вашия въпрос обаче можете да направите всичко в един израз.

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. OrderBy в SQL Server за поставяне на положителни стойности преди отрицателни стойности

  2. SQL, избор между дата/час

  3. Застой при ИЗБЕРЕТЕ/АКТУАЛИЗИРАНЕ

  4. Как да използвате курсора за актуализиране на запис

  5. Разбиране на ЗАКЛЮЧВАНЕТО на SQL Server при SELECT заявки