SQL生成插入语句

时间:2016-09-30 18:28:34

标签: sql-server

我有以下脚本要添加到存储过程中。现在,当我运行它时,SELECT语句打印出所有INSERT语句。我想从我的存储过程中自动运行这些insert语句。

我已经通过执行动态sql尝试了各种方法但是我没有成功,主要是因为我的脚本引用了系统表。反正有没有生成适当的INSERT语句并同时运行它们?

我正在使用SQL Server。

我的代码:

DECLARE @tablename as varchar(255) = 'tblsmoker'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = (SELECT 'INSERT INTO tblCheck (ColumnName,ColumnValue,SID,SName,RID,RName)VALUES (''' + QUOTENAME(c.name) + ''',NULL,0,NULL,0,NULL);'
            FROM sys.columns c
            WHERE c.object_id = OBJECT_ID(@tablename))
print @SQL
EXEC(@SQL)

这段代码给了我:

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。

1 个答案:

答案 0 :(得分:2)

将插入语句的STUFF转换为另一个变量,然后最后使用动态sql来执行变量。

确保使用分号分隔变量内的INSERT语句。

尝试对动态sql尝试稍作修改:

DECLARE @tablename as varchar(255) = 'tblsmoker'
DECLARE @SQL VARCHAR(MAX) = '';
SELECT @SQL = @SQL + 'INSERT INTO tblCheck (ColumnName,ColumnValue,SID,SName,RID,RName)VALUES (''' + QUOTENAME(c.name) + ''',NULL,0,NULL,0,NULL);'
            FROM sys.columns c
            WHERE c.object_id = OBJECT_ID(@tablename)
print @SQL
EXEC(@SQL)