我有我想添加到存储过程中的以下脚本。现在,当我运行这个SELECT语句打印出所有的INSERT语句。我想从我的存储过程中自动运行这些插入语句。插入语句的SQL生成
我试过各种方式执行动态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)
此代码是给我:
子查询返回多个值。当 子查询遵循=,!=,<,< =,>,> =或当子查询用作 表达式时,这是不允许的。
动态sql是这样的。如果您尝试过并且不成功,请发布您的尝试,以便我们可以对其进行调试。 –
请不要使用'set ... =(select)'语法。它伤害了我的眼睛。所有你真正需要的是'select @sql ='insert into ...'from ... where ...' – ajeh