使用' AS'在SQL Server中创建函数的语句

时间:2014-06-09 19:47:21

标签: sql sql-server function stored-procedures

创建函数时是否必须使用AS语句。几乎每个包括MSDN的例子在创建函数时都使用AS语句。来自MSDN,

enter image description here

但实际上我可以在不使用AS语句的情况下创建一个函数,它可以工作。

enter image description here

那么为什么我们使用AS语句创建函数,虽然没有它可以工作?

第二个问题是,我为存储过程尝试了相同的场景,并意识到必须使用AS语句。是否真的使用AS是创建存储过程所必需的,而不是创建函数。

1 个答案:

答案 0 :(得分:2)

official documentation的语法是

--Transact-SQL Scalar Function Syntax
CREATE FUNCTION [ schema_name. ] function_name 
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type 
    [ = default ] [ READONLY ] } 
    [ ,...n ]
  ]
)
RETURNS return_data_type
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
        function_body 
        RETURN scalar_expression
    END
[ ; ]

请注意,AS的使用在此处是可选的。 (见Transact-SQL Syntax Conventions (Transact-SQL)

是的,创建stored procedures时需要AS,但创建函数时则不需要AS。这只是关于语言的很多怪癖之一。

我个人更喜欢在每次创建函数时使用{{1}}作为样式,因为它更清楚地将函数的签名与正文分开,并且它使语法与语法更加一致用于创建存储过程(即使语言不需要它)。