所以,我遇到了一个非常烦人的 T-SQL 问题……本质上,在一个表中,有几个 T-SQL 语句。我想要一个存储过程来有效地抓取这些行并将它们连接到一个变量。然后,使用 EXEC(@TSQL) 执行连接的行
问题是,在调用 Exec 时,字符串与换行符的连接似乎被剥离了......
例如:
declare @sql nvarchar(max) = ''
select @sql += char(13) + char(10) + [sql] from [SqlTable]
exec(@sql) -- Won't always do the right thing
print @sql -- Looks good
我不想用光标屠杀代码,有什么办法解决这个问题吗?谢谢!
编辑:好的,所以看起来问题实际上仅与 GO 语句有关,例如:
declare @test nvarchar(max) = 'create table #test4(i int) ' + char(10) + char(13) + 'GO' + char(10) + char(13) +'create table #test5(i int)'
exec(@test)
我想这个去必须去(没有双关语)我只是真的不想尝试解析它,因为害怕特殊情况会炸毁整个事情。