how to store results in a temporary table using dynamic sql (sq lserver)

  Kiến thức lập trình

I would like to store the result of this sql server request in the temporary table #TAB1 but when I add an insert into #TAB1 my program crashes with the following error

(16 lignes affectées)
Msg 156, Niveau 15, État 1, Ligne 63
Incorrect syntax near the keyword ‘INSERT’.
Msg 156, Niveau 15, État 1, Ligne 77…………..

code :

CREATE TABLE #TAB1 (
    NAT_SIN VARCHAR(50),
    STE_ASSUR VARCHAR(50),
    EXER_SIN INT,
    NUM_SIN INT,
    CLE_SIN INT,
    SAV_TG VARCHAR(50),
    RCP_TG VARCHAR(50),
    TYPE VARCHAR(50),
    VALUE VARCHAR(50)
)

DECLARE @Columns TABLE (
    ColumnName VARCHAR(50),
    ColumnType VARCHAR(50)
)

INSERT INTO @Columns VALUES
    ('SAV_RA', 'SAV_RA'),
    ('RCP_RA', 'RCP_RA'),
    ('SAV_AB', 'SAV_AB'),
    ('RCP_AB', 'RCP_AB'),
    ('SAV_PP', 'SAV_PP'),
    ('RCP_PP', 'RCP_PP'),
    ('SAV_C1', 'SAV_C1'),
    ('RCP_C1', 'RCP_C1'),
    ('SAV_C0', 'SAV_C0'),
    ('RCP_C0', 'RCP_C0'),
    ('SAV_F0', 'SAV_F0'),
    ('RCP_F0', 'RCP_F0'),
    ('SAV_F1', 'SAV_F1'),
    ('RCP_F1', 'RCP_F1'),
    ('SAV_F2', 'SAV_F2'),
    ('RCP_F2', 'RCP_F2')

DECLARE @SQL NVARCHAR(MAX) = ''

SELECT @SQL = @SQL + '
INSERT INTO #TAB1 SELECT
    NAT_SIN,
    STE_ASSUR,
    EXER_SIN,
    NUM_SIN,
    CLE_SIN,
    SAV_TG,
    RCP_TG,
    ''' + ColumnType + ''' AS TYPE,
    ' + ColumnName + ' AS VALUE
 FROM
    #Test
UNION ALL
'
FROM @Columns

SET @SQL = LEFT(@SQL, LEN(@SQL) - 11)

EXEC(@SQL)

select * from #TAB1

LEAVE A COMMENT