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

Crea un elenco dinamico di valori di istruzione INSERT

Considera il seguente comando:

SELECT 'SELECT ' +
    STUFF ((
        SELECT ', [' + name + ']'
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') +
    ' FROM [Table]'

Questo creerà un SELECT dichiarazione per una tabella specifica. Per creare un INSERT dichiarazione potrebbe assomigliare a questo:

SELECT @sql = 'INSERT INTO [Table] (' +
    STUFF ((
        SELECT ', [' + name + ']'
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') +
    ') VALUES (' +
    STUFF ((
        SELECT ', @' + name
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') + ')'

Ci sono ovviamente molti modi per arrivare a INSERT dichiarazione, modellala a tuo piacimento.