目录
函数
【1】
【2】
【3】❗
【4】
存储过程
思考&分析
函数
【1】
--(1)定义一个根据学生姓名查询该生学习课程的函数stu_count。
--create function stu_count(@sname char(8))--学生姓名
--returns char(12)--学习课程
--begin
--declare @course char(12)--学习课程
--select @course=course from scores
--join student on scores.sno=student.sno
--where sname=@sname--根据姓名
--return @course--学习课程
--end;
--调用
--print dbo.stu_count('杜敏')
【2】
----定义一个根据系名和课程名,查询该系学生在该门课程上程的平均分的函数sdept_avggrade。
--create function sdept_avggrade(@dept varchar(20),@course varchar(20))
--returns decimal(4,1)
--begin
--declare @avg decimal(4,1)
--select @avg=avg(grade)
--from scores join student on scores.sno=student.sno
--where @dept in(select dept from classes join student on classes.classno=student.sno)
--and course=@course
--return @avg
--end;----分别用select和print调用函数sdept_avggrade,查询“计算机系”学生在“数据库原理与应用”这门课程上的平均成绩。
--print dbo.sdept_avggrade('计算机系','大学英语')
--select dbo.sdept_avggrade('计算机系','大学英语')
【3】❗
--(3)创建一个函数f1,根据学生的学号和选修的课程查询该生在该门课程上的成绩,然后返回这个成绩所对应的等级(90及以上:优秀;80及以上:良好;70及以上:中等;60及以上:及格;60以下:不及格)。
--create function f1(@sno char(8),@course char(12))
--returns char(8)
--begin
--declare @level char(8),@grade int
--select @grade=grade from scores
--if @grade>=90
--set @level='优秀'
--else if @grade>=80
--set @level='良好'
--else if @grade>=70
--set @level='中等'
--else if @grade>=60
--set @level='及格'
--else
--set @level='不及格'
--return @level
--end;
--调用
--print dbo.f1('6320210622 ','大学英语')
--select dbo.f1('计算机系','大学英语')
create function f1(@sno char(8),@course char(12))
returns char(8)
begin
declare @level char(8),@grade int
select @grade=grade from scores
select @level=CASE
when @grade>=90 then '优秀'
when @grade>=80 then'良好'
when @grade>=70 then '中等'
when @grade>=60 then '及格'
else '不及格'
end
return @level
end;
【4】
--(4)创建一个自定义函数f2,根据学生的学号查询该学生的姓名、选修课程名称和对应课程的成绩。(表值函数)
--create function f2(@sno char(8))
--returns table
--return
--(
--select sname,course,grade from student
--join scores on student.sno=scores.sno
--where student.sno=@sno
--)--(7)调用函数f2,查询“St0109010001”号学生的姓名、选修课程名称和对应课程的成绩。
--select * from dbo.f2('6320210630')
--使用DROP FUNCTION语句来删除f1和f2函数。
drop function f1,f2