Mik*_*ike 4 sql sql-server-2008
我正在编写一个存储过程来DELETE为管理员创建一组语句来对数据库运行
作为"回滚"解决方案的一部分,我想,对于我要删除的每一行,还要单独创建相应的INSERT语句,以便运行脚本的人希望撤消,他们可以简单地运行insert语句对数据库
我的问题是,如果我有一个表有8列(Col1..Col8)的表,我如何在所有列的逗号分隔列表中提取值,以便我最终得到
INSERT INTO Table VALUES (Col1value, Col2value, ...Col8value)
请考虑以下命令:
SELECT 'SELECT ' +
    STUFF ((
        SELECT ', [' + name + ']'
        FROM syscolumns
        WHERE id = OBJECT_ID('Table') AND
            name <> 'me'
        FOR XML PATH('')), 1, 1, '') +
    ' FROM [Table]'
这将为SELECT特定表格构建一个语句.要构建INSERT语句,它可能如下所示:
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, '') + ')'
当然有很多方法INSERT可以根据自己的喜好来制作声明.
| 归档时间: | 
 | 
| 查看次数: | 16770 次 | 
| 最近记录: |