从联机丛书中,RETURN
语句定义为:
无条件退出查询或过程。 RETURN是立即完成的,可以在任何时候用于退出程序,批次或语句块。不执行RETURN之后的语句。
请注意,它可以停止batch
。但是,我的测试不符合这一点。以下是我的测试代码。
IF DATABASEPROPERTYEX(N'data', N'Version') IS NULL
RETURN;
USE data;
我选择此代码并在SQL Server Management Studio中运行它。结果是:
Msg 911,Level 16,State 1,Line 13
数据库'数据'不存在。确保正确输入名称。
据我所知,由于我的代码不包含GO
,所以它应该只在一个批处理中完成。由于数据库 data 不存在,RETURN
语句应该停止执行,USE
语句将无法运行。但结果根本不是我的想法。有人可以帮忙吗?
我可以确认我的测试代码是一次性的。我使用SQL profiler捕获了SQL:BatchStarting
和SQL:BatchCompleted
个事件,结果如下。
SQL:BatchStarting
和SQL:BatchCompleted
事件具有相同的SQL文本。
答案 0 :(得分:4)