我想在 T-SQL 中执行以下操作:
EXEC('... ' + (SELECT ...))
一个简单的具体例子是
EXEC('DROP TABLE ' + (SELECT name FROM sys.tables WHERE ...))
(显然,选择 WHERE 子句以使子查询始终只返回一个值。)当我尝试这个时,我得到一个错误:
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)
但出于各种原因,我只想发表一个声明。那可能吗?
PS:如果它是相关的,那就是我试图挤进一个语句的动态 SQL 代码: