在 SSMS 中执行以下操作时;

if not exists (select * from sys.databases where name = 'SWFUAT')
begin
    print 'The UAT database (SWFUAT) does not exist...'
    set noexec on;
end
go

use SWFUAT;
go

显示如下;



编译器不应该忽略“use”语句吗?

最佳答案

如果我正确理解你的问题,那么你想执行

use SWFUAT;

仅当 SWFUAT 数据库存在时。

不幸的是因为这句话



描述 here 你不能简单地在你的情况下使用 SET NOEXEC
为了实现你所需要的,你应该用例如这个替换你的代码
if not exists (select * from sys.databases where name = 'SWFUAT')
begin
    print 'The UAT database (SWFUAT) does not exist...'
end else begin
    use SWFUAT;
end
go

关于sql-server - 设置 NOEXEC ON 仍然执行 "USE"语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38319250/

10-14 11:02