私は多くのタスクで動的SQLを使用しており、同じ問題に継続的に遭遇しました:動的T-SQLステートメント内で使用される変数の値を出力します。
例えば:
Declare @SQL nvarchar(max), @Params nvarchar(max), @DebugMode bit, @Foobar int
select @DebugMode=1,@Foobar=364556423
set @SQL='Select @Foobar'
set @Params=N'@Foobar int'
if @DebugMode=1 print @SQL
exec sp_executeSQL @SQL,@Params
,@Foobar=@Foobar
上記のコードの印刷結果は、単に "Select @Foobar"です。実行中のSQLの値と変数名を動的に出力する方法はありますか?または、印刷を行うときに、SQLを再実行できるようにパラメーターを実際の値に置き換えますか?
同様のことを行うために関数を1つまたは2つ作成しましたが、データ型変換、パターンマッチングの切り捨ての問題、非動的な解決策を試しました。他の開発者がすべての変数を手動で印刷せずにこの問題を解決する方法に興味があります。