【发布时间】:2016-07-16 04:34:31
【问题描述】:
在 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
显示如下;
UAT 数据库 (SWFUAT) 不存在...
消息 911,第 16 层,状态 1,第 20 行
数据库 'SWFUAT' 不存在。确保名称输入正确。
编译器不应该忽略“use”语句吗?
【问题讨论】:
-
@shA.t 您是正确的,但是文档说明了; >当 SET NOEXEC 为 ON 时,SQL Server 编译每批 Transact-SQL 语句但不执行它们。 [Microsoft][MSLink] 提供的示例显示
noexec被使用如上所示? [MSLink]:msdn.microsoft.com/query/… -
"USE 在编译和执行时都执行,并立即生效。" - msdn.microsoft.com/en-NZ/library/ms188366.aspx
标签: sql-server tsql ssms