T-SQLで次のことをしたい:
EXEC('... ' + (SELECT ...))
簡単な具体例は
EXEC('DROP TABLE ' + (SELECT name FROM sys.tables WHERE ...))
(明らかに、WHERE 句は、サブクエリが常に正確に 1 つの値を返すように選択されています。)これを試みると、エラーが発生します。
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '('.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
変数を使用してこれを回避できることはわかっています。たとえば、次のようになります。
DECLARE @sql varchar(MAX)
SELECT @sql = 'DROP TABLE ' + name FROM sys.tables WHERE ...
EXEC(@sql)
しかし、さまざまな理由から、私は 1 つのステートメントだけを持ちたいと思います。それは可能ですか?
PS: 関連する場合、それは私が 1 つのステートメントに絞り込もうとしている動的 SQL コードです。