SQL将表的内容输出到字符串

Bel*_*iez 7 t-sql sql-server

我有一个包含许多SQL命令行的表,这些SQL命令组成了一个SQL语句(我很感激这个答案,这里是第5步)

我已经按照这个答案中的示例进行操作,现在有一个SQL表 - 每行都是一行构建查询的SQL.我可以将这个表的内容复制并粘贴到一个新的查询窗口并获得结果但是由于我缺乏SQL知识,我不知道如何将表的内容复制到一个字符串变量中然后我可以执行.

编辑:我的表中的SQL语句包含每个语句的1行,即

Row1: SELECT * FROM myTable
Row2: WHERE
Row3: col = @value
Run Code Online (Sandbox Code Playgroud)

如果复制到VARCHAR(MAX)中,则该语句超出MAX限制.

我期待着你的回复.同时我会尝试自己.

谢谢

Con*_*lls 8

您可以使用coalesce将列的内容连接成一个字符串,例如

create table foo (sql varchar (max));

insert foo (sql) values ('select name from sys.objects')
insert foo (sql) values ('select name from sys.indexes')

declare @sql_output varchar (max)
set @sql_output = ''       -- NULL + '' = NULL, so we need to have a seed
select @sql_output =       -- string to avoid losing the first line.
       coalesce (@sql_output + sql + char (10), '')
  from foo

print @sql_output
Run Code Online (Sandbox Code Playgroud)

注意:未经测试,只是在我的头顶,但一个工作的例子应该产生以下输出:

select name from sys.objects
select name from sys.indexes
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用exec (@sql_output)或执行字符串的内容sp_executesql.