创建函数时是否必须使用AS语句。几乎每个包括MSDN的例子在创建函数时都使用AS语句。来自MSDN,
但实际上我可以在不使用AS语句的情况下创建一个函数,它可以工作。
那么为什么我们使用AS语句创建函数,虽然没有它可以工作?
第二个问题是,我为存储过程尝试了相同的场景,并意识到必须使用AS语句。是否真的使用AS是创建存储过程所必需的,而不是创建函数。
答案 0 :(得分:2)
--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}}作为样式,因为它更清楚地将函数的签名与正文分开,并且它使语法与语法更加一致用于创建存储过程(即使语言不需要它)。