函数:函数是由一个或多个Transact-SQL语句组成的子程序。用户定义函数接受零个或多个输入参数,并返回标量值或表。
自定义函数的分类:
标量函数:返回值为单个的值
内联表值函数:返回值为可更新表
多语句表值函数:返回值为不可更新表
标量函数的定义和调用:
创建标量函数,计算指定课程号的课程的平均成绩,然后调用该函数查询某门课的平均成绩。
create function Avg_degree(@cno char(6))
returns float(1) --返回值类型
as
begin
declare @var float(1)
select @var = AVG(degree)
from score
where cno = @cno
return @var
end
select dbo.Avg_degree('3-105')
内联表值函数的创建和调用:
创建内联表值函数,查询指定学号的学生的选课情况(包括学号、姓名、课程号和成绩),然后调用该函数查询某位学生的选课情况,再调用该函数将该生某门课的成绩改为100,重新查询该生成绩检查一下改过来了吗。
create function select_course(@ssno char(5))
returns table
as
return (select *
from score
where sno = @ssno)
go
select * from select_course('101')
update select_course('101')
set degree = 80
where cno = '3-105'
多语句表值函数的创建和调用:
创建多语句表值函数,查询指定课程号的学生的选课情况(包括学号、姓名和成绩),并将选了该课的学生成绩提高5分,然后调用该函数查询某门课的学生的选课及成绩修改情况。(之前先查询一下该课的成绩以便与调用函数后的成绩作对比。)相当于C语言中形参和实参的区别吧
create function select_student(@ccno char(6))
returns @st table
(
sno char(5),
sname char(10),
degree float
)
as
begin
insert @st
select student.sno, sname, degree = degree+5
from student, score
where student.sno = score.sno and cno = @ccno
return
end