这是我的场景,我正在使用 select 语句创建一个动态查询,该语句使用函数来生成查询。我将它存储到一个变量中并使用 exec 运行它。IE
declare @dsql nvarchar(max)
set @dsql = ''
select @dsql = @dsql + dbo.getDynmicQuery(column1, column2)
from Table1
exec(@dsql)
现在它会在这种情况下产生许多错误,例如“','附近的语法不正确”和“Case 表达式只能嵌套到第 10 级”。
但是,如果我从@dsql 获取文本并手动为其分配一个变量,例如:
declare @dsql nvarchar(max)
set @dsql = ''
set @dsql = N'<Dynamic query text>'
exec(@dsql)
它运行并生成结果,这可能是什么原因?
谢谢..