SQL——自定义函数

函数:函数是由一个或多个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

你可能感兴趣的:(数据库)