Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen Sie eine dynamische Liste von INSERT-Anweisungswerten

Betrachten Sie den folgenden Befehl:

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

Dadurch wird ein SELECT erstellt Anweisung für eine bestimmte Tabelle. Um ein INSERT zu erstellen Anweisung könnte so aussehen:

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, '') + ')'

Es gibt natürlich viele Möglichkeiten zum INSERT zu gelangen Anweisung, formen Sie es nach Ihren Wünschen.