2010-11-16 92 views

回答

2

CREATE PROCEDURE documentation所示,BEGIN/END是可选的:

{[BEGIN] sql_statement [;] [... n]的 [END]}

的一个或多个的Transact -SQL 陈述包括 程序的正文。您可以使用可选的 BEGIN和END关键字来包含 语句。有关信息,请参阅后面的 最佳做法,一般说明和 限制和限制部分 。

作为个人的喜好,我总是包括他们。

1

后者是编程只是一个良好的作风并按照通用standards.They什么都没有什么不同,据我所知。

我个人认为这是有道理的,并且提高了可读性,以便在每个逻辑代码块(即使在存储过程的情况下)都有一个BEGINEND

+0

'一个BEGIN和END周围code'的每一个逻辑块,哎呀!我认为这样会更有帮助。 – 2010-11-16 17:01:03

+0

嗯,我看到你的观点..我试图指出最佳做法..我不会为一个划线员或微不足道的地方... – Vishal 2010-11-16 17:03:44

2

对我来说,这只是一个不必要的额外缩进级别。但是,如果您将其设置为BEGIN TRY - END TRY并使用BEGIN CATCH - END CATCH,那么它会增加真正的目的。

0

在这种情况下没有真正的倾向。但是如果你使用BEGIN/END块,你的代码将是可读和干净的。

+0

我见过很多BEGIN/END块代码非常可读。可读代码还有很多,比在每个地方使用BEGIN/END块都要多。 – 2010-11-16 16:58:00

0

BEGIN和END对存储过程没有影响,但它们所需的函数。

好:

CREATE PROC dbo.sproc(@v varchar(10)) 
AS 
RETURN -1 

不行:

CREATE FUNCTION dbo.fun(@v varchar(10)) 
RETURNS INT 
AS 
RETURN 1