创建存储过程时,BEGIN/END块有什么作用吗?
例如:
CREATE PROCEDURE SPNAME
AS
SELECT * FROM TABLE
对比。
CREATE PROCEDURE SPNAME
AS
BEGIN
SELECT * FROM TABLE
END
创建存储过程时,BEGIN/END块有什么作用吗?
例如:
CREATE PROCEDURE SPNAME
AS
SELECT * FROM TABLE
对比。
CREATE PROCEDURE SPNAME
AS
BEGIN
SELECT * FROM TABLE
END
对我来说,它只是不必要的额外缩进级别。但是,如果你将其变成一个 BEGIN TRY
- END TRY
带有一个 BEGIN CATCH
- END CATCH
,那么它就有了真正的用途。
后者只是一种良好的编程风格,遵循通用标准。据我所知,它们在任何方面都没有区别。
我个人认为,在每个逻辑代码块周围(即使在存储过程的情况下)放置BEGIN
和END
是有意义的,并且可以提高可读性。
在此情况下没有实际目的。但是如果您使用BEGIN/END块,则您的代码将更易读和清晰。
BEGIN 和 END 对于存储过程没有影响,但对于函数是必需的。
好的:
CREATE PROC dbo.sproc(@v varchar(10))
AS
RETURN -1
不好:
CREATE FUNCTION dbo.fun(@v varchar(10))
RETURNS INT
AS
RETURN 1