これが私のシナリオです。クエリを生成するために関数を使用するselectステートメントを使用して動的クエリを作成しています。私はそれを変数に格納し、execを使用して実行しています。すなわち
declare @dsql nvarchar(max)
set @dsql = ''
select @dsql = @dsql + dbo.getDynmicQuery(column1, column2)
from Table1
exec(@dsql)
これで、このシナリオで「構文が正しくない」、「ケース式はレベル10にのみネストできる」などの多くのエラーが発生します。
しかし、@ dsqlからテキストを取得し、次のように手動で変数を割り当てる場合:
declare @dsql nvarchar(max)
set @dsql = ''
set @dsql = N'<Dynamic query text>'
exec(@dsql)
それが実行されて結果が生成されますが、その理由は何でしょうか?
ありがとう..