文章目录
用户定义函数
根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别:
- 标量函数:返回标量值(单个值)的函数。
- 内嵌表值函数:函数中只包含一个T-SQL语句,而返回值为多个值,就好像是形成了一个新的表。
- 多语句表值函数:函数中可以包含多个T-SQL语句,返回值就是形成一个数据表。
1. 标量函数【sql server2008叫:标量值函数】
定义一个函数用于计算指定学生的平均成绩。
CREATE FUNCTION average(@sname char(10))
RETURNS numeric
AS
BEGIN
DECLARE @aver numeric
SELECT @aver=(SELECT AVG(score)
FROM student,sc
WHERE student.sno=sc.sno and student.sname=@sname)
RETURN @aver
END
GO
调用函数
select dbo.average('Avy ') as 'avy的平均成绩'
go
declare @aver numeric
exec @aver=dbo.average 'Avy '
print @aver
go
标量函数的删除
drop function dbo.average
go
2. 内嵌表值函数【sql server2008叫:表值函数】
3. 多语句表值函数【sql server2008叫:表值函数】
内嵌表值函数和多语句表值函数都返回表,二者不同之处在于:
内嵌表值函数
没有函数主体,返回的表是单个SELECT语句的结果集;多语句表值函数
返回值是一个表,但它和标量函数一样有一个用BEGIN-END 语句括起来的函数体,返回值的表中的数据是由函数体中的语句插入的。