【数据库】分支与循环&函数&存储过程

2023-12-14 20:39:54

目录

函数?

【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

存储过程

思考&分析

文章来源:https://blog.csdn.net/m0_74841364/article/details/134885295
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。