创建存储过程时,BEGIN / END块是否起作用?
例如
CREATE PROCEDURE SPNAME
AS
SELECT * FROM TABLE
VS
CREATE PROCEDURE SPNAME
AS
BEGIN
SELECT * FROM TABLE
END
答案 0 :(得分:2)
如CREATE PROCEDURE documentation所示,BEGIN / END是可选的:
{[BEGIN] sql_statement [;] [... n] [完]}
一个或多个Transact-SQL 包含该机构的声明 程序。您可以使用可选项 包含BEGIN和END关键字 声明。有关信息,请参阅 最佳实践,一般性评论和 限制和限制部分 接下来。
作为个人喜好,我总是包括它们。
答案 1 :(得分:2)
对我来说,这只是一个不必要的额外缩进级别。但是,如果您使用BEGIN TRY
- END TRY
进行BEGIN CATCH
- END CATCH
,那么它会增加一个真正的用途。
答案 2 :(得分:1)
后者只是一种很好的编程风格,遵循一般标准。据我所知,它们没有任何区别。
我个人认为在每个逻辑代码块周围都有一个BEGIN
和END
是有意义的并且提高了可读性(即使在存储过程的情况下)。
答案 3 :(得分:0)
案件中没有真正的目的。但是如果你使用BEGIN / END块,你的代码将是可读和干净的。
答案 4 :(得分: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