Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Crie uma lista dinâmica de valores da instrução INSERT


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

Isso criará um SELECT instrução para uma tabela específica. Para construir um INSERT declaração pode ficar assim:
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, '') + ')'

É claro que existem muitas maneiras de acessar o INSERT declaração, molde-a ao seu gosto.