目錄
函數?
【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