创建用户自定义函数
最近项目中处理数据时用到了自定义函数,感觉用起来很方便,就看了些资料,结合项目整理了一下sql server中自定义函数的优势和用法。
用户自定义函数具有视图的一些特点,可以将它们用再表达式或者select语句中的from子句中,还可以将它们做为数据库架构的一部分,另外还可以接受参数,这是视图所不具备的。用户自定义函数还有存储过程的优点,是预编译和优化的。
采用用户自定义函数存在的分歧主要是可移植性方面。
用户自定义函数有三种类型:
一:返回单个值的标量函数。
标量函数就是返回单个值的函数。这类函数可以接受多个参数,进行计算,然后返回单个值。
CREATE FUNCTION FuncionName( 参数1,参数2,...)
RETURNS 数据类型
as
begin
代码
return 表达式
end
RETURNS 数据类型
as
begin
代码
return 表达式
end
调用标量函数:select FuncionName('数值1','数值2',...)
二:类似于视图的表单函数。
三:使用代码创建结果集的多语句函数。
多语句表值用户自定义函数既可以像标量函数那样包含复杂的代码,也可以像内嵌表值函数那样返回一个结果集。因此它可以用代码产生复杂的结果集,然后方便地在select语句中使用它。
创建多语句表值函数
CREATE FUNCTION 函数名(参数1,参数2,...)
RETURNS @表名 TABLE(列名1,列名2,...)
AS
BEGIN
代码
RETURN
END
下面创建一个具体的多语句表值函数
CREATE FUNCTION PriceAvg()
return @Price Table(Code char(10),eDate datetime,price money)
as
begin
insert @price(code,eDate,price) select code,eDate,price from product join price on price.productID = product.productID
return
end
RETURNS @表名 TABLE(列名1,列名2,...)
AS
BEGIN
代码
RETURN
END
下面创建一个具体的多语句表值函数
CREATE FUNCTION PriceAvg()
return @Price Table(Code char(10),eDate datetime,price money)
as
begin
insert @price(code,eDate,price) select code,eDate,price from product join price on price.productID = product.productID
return
end
PriceAvg() 函数返回Price表中的所有价格

浙公网安备 33010602011771号