用户自定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。
SQL Server 支持两种用户定义函数:标量UDF和表值UDF。标量UDF只返回单个数据值。而表值UDF则返回一个表。使用UDF 的优点之一是可以在查询中集成UDF。对于查询中返回单个值的表达式,在其出现的位置上,也能够使用标量UDF(例如,在SELECT列表中)。表值UDF只能在查询的FROM子句中出现。
CREATE FUNCTION dbo.fn_age
(
@birthdate AS DATETIME,
@eventdate AS DATETIME
)
RETURNS INT
AS
BEGIN
RETURN
DATEDIFF(year,@birthdate,@eventdate)
- CASE WHEN 100*MONTH(@eventdate)+DAY(@eventdate)
< 100* MONTH(@birthdate) + DAY(@birthdate)
THEN 1 ELSE 0
END
END