【发布时间】:2012-10-02 20:34:22
【问题描述】:
可能重复:
When do I need to use Begin / End Blocks and the Go keyword in SQL Server?
例子:
CREATE PROCEDURE DoSomething
AS
BEGIN
SET NOCOUNT ON;
-- Insert lots of statements in here, including other stored procedures.
END
您需要 BEGIN 和 END 吗?有没有会有影响吗?
【问题讨论】:
-
真的试过了吗?你发现有什么不同吗?
-
如果我在“BEGIN”中有多个语句......如果其中一个发生“异常”并且我收到错误怎么办。它会继续执行其他代码行还是退出“BEGIN”?
-
不,它将批处理的其余部分计为存储的过程定义(即使在
END之后,如果存在BEGIN ... END)。所以很容易在不经意间留下一个递归的EXEC调用! -
在
IF语句和循环中,BEGIN ... END是很好的做法。在存储过程中,它应该被认为是不好的做法;它给人一种错误的封装感。这是解释here。