创建用户自定义函数

最近项目中处理数据时用到了自定义函数,感觉用起来很方便,就看了些资料,结合项目整理了一下sql server中自定义函数的优势和用法。

用户自定义函数具有视图的一些特点,可以将它们用再表达式或者select语句中的from子句中,还可以将它们做为数据库架构的一部分,另外还可以接受参数,这是视图所不具备的。用户自定义函数还有存储过程的优点,是预编译和优化的。

采用用户自定义函数存在的分歧主要是可移植性方面。

用户自定义函数有三种类型:

一:返回单个值的标量函数。

标量函数就是返回单个值的函数。这类函数可以接受多个参数,进行计算,然后返回单个值。

 

CREATE FUNCTION FuncionName( 参数1,参数2,...)
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
 
PriceAvg() 函数返回Price表中的所有价格

 

 

 

posted @ 2010-02-04 16:26  草市江田  阅读(326)  评论(0)    收藏  举报