2010-11-16 54 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