創建存儲過程時,BEGIN/END塊是否提供服務和目的?「CREATE PROCEDURE SPNAME AS」vs.「CREATE PROCEDURE SPNAME AS BEGIN/END」
例如,
CREATE PROCEDURE SPNAME
AS
SELECT * FROM TABLE
與
CREATE PROCEDURE SPNAME
AS
BEGIN
SELECT * FROM TABLE
END
創建存儲過程時,BEGIN/END塊是否提供服務和目的?「CREATE PROCEDURE SPNAME AS」vs.「CREATE PROCEDURE SPNAME AS BEGIN/END」
例如,
CREATE PROCEDURE SPNAME
AS
SELECT * FROM TABLE
與
CREATE PROCEDURE SPNAME
AS
BEGIN
SELECT * FROM TABLE
END
如CREATE PROCEDURE documentation所示,BEGIN/END是可選的:
{[BEGIN] sql_statement [;] [... n]的 [END]}
的一個或多個的Transact -SQL 陳述包括 程序的正文。您可以使用可選的 BEGIN和END關鍵字來包含 語句。有關信息,請參閱後面的 最佳做法,一般說明和 限制和限制部分 。
作爲個人的喜好,我總是包括他們。
後者是編程只是一個良好的作風並按照通用standards.They什麼都沒有什麼不同,據我所知。
我個人認爲這是有道理的,並且提高了可讀性,以便在每個邏輯代碼塊(即使在存儲過程的情況下)都有一個BEGIN
和END
。
對我來說,這只是一個不必要的額外縮進級別。但是,如果您將其設置爲BEGIN TRY
- END TRY
並使用BEGIN CATCH
- END CATCH
,那麼它會增加真正的目的。
在這種情況下沒有真正的傾向。但是如果你使用BEGIN/END塊,你的代碼將是可讀和乾淨的。
我見過很多BEGIN/END塊代碼非常可讀。可讀代碼還有很多,比在每個地方使用BEGIN/END塊都要多。 – 2010-11-16 16:58:00
BEGIN和END對存儲過程沒有影響,但它們是所需的函數。
好:
CREATE PROC dbo.sproc(@v varchar(10))
AS
RETURN -1
不行:
CREATE FUNCTION dbo.fun(@v varchar(10))
RETURNS INT
AS
RETURN 1
'一個BEGIN和END周圍code'的每一個邏輯塊,哎呀!我認爲這樣會更有幫助。 – 2010-11-16 17:01:03
嗯,我看到你的觀點..我試圖指出最佳做法..我不會爲一個劃線員或微不足道的地方... – Vishal 2010-11-16 17:03:44