Sql 中用户定义函数

 

一.用户定义函数可以接受参数,执行操作并将操作结果以值的形式返回。用户定义函数也可以使用在表达式,查询,存储过程中。

二.用户定义函数与存储过程的比较

     用户定义函数与存储过程类似,都是由多行T-SQL语句所组成的,都可以接受参数,都可以返回值,但用户定义函数也有和存储过程所不能比拟的优点:

 1.用户定义函数可以返回,除了text,ntext,image,cursor 和timestamp类型之外的所有数据类型,而存储过程只能返回整数值。

 2.用户定义函数执行方式灵活,可以通过execute方式执行,也可以用在表达式中,并以返回值的方式来取代函数名,儿存储过程只能通过execute来执行。

三.与存储过程相比,用户定义函数也有不足之处:

 1.存储过程可以通过output参数来返回数据,而用户定义函数只可以接受参数,不能通过output类型的参数返回值。

 2.在存储过程中可以对任何数据及对象进行修改,包括新建及删除数据表,修改数据库设置等,而在用户定义函数里只能对数据进行修改,不能对数据库对象进行修改。

 简单的说,存储过程适合进行不用返回结果的操作,用户定义函数适合进行计算,提取数据等需要返回结果的操作。

四.用户定义函数类型

 根据用户定义函数的返回值,可以将用户定义函数分为标量值函数和表值函数两个类型。

1.标量值函数:标量值函数可以返回一个在return子句里定义的确定类型的标量值。返回值可以是除了text,ntext,image,cursor,timestamp和table类型之外的所有数据类型,在多语句标量函数里,函数体语句定义在begin和end语句之内,其中包含了可以返回值的T-SQL语句。

2.表值函数:表值函数返回的是table数据类型,表值函数又可以范围内联表值函数和多语句表值函数两种。

   内联表值函数的返回值是一个表。在内联表值函数里没有begin和end语句括起来的函数体,返回的表是一个位于return子句中的select语句从数据库里提取的数据。内联表值函数

看起来有点像一个具有参数的视图。

  多语句表值函数的返回值也是一个表。与标量值函数一样,在多语句函数里也有一个用begin和end语句括起来的函数体,在函数体里可以包含多个T-SQL语句,通过这些T-SQL语句返回表中的数据。由于多语句表值函数里可以包含多个T-SQL语句,所以在多语句表值函数里可以对数据进行多次查询,合并等操作,是内联表值函数的补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值