Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer une liste dynamique de valeurs d'instruction INSERT

Considérez la commande suivante :

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

Cela construira un SELECT déclaration pour une table spécifique. Pour construire un INSERT déclaration, cela pourrait ressembler à ceci :

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

Il y a bien sûr plusieurs façons d'accéder au INSERT déclaration, façonnez-la à votre goût.