首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL生成Insert语句

SQL生成Insert语句
EN

Stack Overflow用户
提问于 2016-09-30 18:28:33
回答 1查看 39关注 0票数 0

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

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

为此,我将使用Server。

我的代码:

代码语言:javascript
复制
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)

这段代码给了我:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-30 18:30:43

将insert语句填充到另一个变量中,然后使用动态sql执行该变量。

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

尝试对动态sql尝试进行轻微的修改:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39797871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档