sql >> Database teknologi >  >> RDS >> Sqlserver

Bruger du CTE som en blokløkke?

Generelt kan du ikke.

Den er kun gyldig for den næste erklæring. Du kan definere en visning med samme definition, hvis du vil genbruge definitionen for flere udsagn eller materialiser det til en midlertidig tabel-/tabelvariabel selv for at genbruge resultaterne .

For det specifikke tilfælde i dit spørgsmål kunne du dog gøre det hele i én erklæring.

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. Filtrering og gruppering af data fra tabel med nøgle/værdi-par

  2. Hvordan kan jeg finde alle søskende til min node og dens anker i et hierarkisk kategoritræ?

  3. Overførsel af datatabel til en lagret procedure

  4. PHP- indsættelse af binære data i mysql ved hjælp af forberedte sætninger