私は、クエリでかなり多くの変数を使用する必要がある T-SQL で、かなり長くて複雑な手順に取り組んでいます。
私はこのようなものに行き詰まりました:
SELECT @TableSQL = 'SELECT '
+ @columnsForInsert
+ '= COALESCE(@columnsForInsert
+ ''], ['', '''')
+ name
FROM MIGRATION_DICTIONARIES.dbo.' + @TableName + '_COLUMNS '
EXEC sp_executesql @TableSQL
PRINT @columnsForInsert
ご覧のとおり、一時テーブルのすべての行を 1 行に連結し、それを@columnsForInsert
変数に割り当てようとしています。ただし、この文字列を実行すると、表示されないsp_executesql
スコープに移動し@columnsForInsert
ます。
これを実行する方法を知っていますか?
言い換えると。私は次のようなものを持っています
SELECT @columnsForInsert = COALESCE(@columnsForInsert + '], [', '') + name
FROM MIGRATION_DICTIONARIES.dbo.Foobar_COLUMNS
これは私の手順ではうまくいきます。ただし、最終バージョンでは Foobar は変数になるため、単純な配置@tableName
は機能しません。どうすればこれを達成できますか?
Microsoft SQL Server 2012 を使用しています