系列文章目录
一、实验目的
1. 掌握存储过程的概念,熟悉使用存储过程来进行数据库应用程序的设计。
2. 掌握存储过程的创建、使用和删除。
二、实验内容及要求
本实验使用数据库为SCHOOL数据库。
1.创建一个存储过程Proc_Course,查看“0108”号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
create procedure PROC_Cour
AS
SELECT Student.Stu_id,Stu_name,grade
FROM Student,Studentgrade
WHERE Student.Stu_id=StudentGrade.Stu_id and
course_id='0108'
Go
exec PROC_Cour
2.创建一个存储过程Proc_SC,通过学生学号来查询学生选修情况,默认查询学号为“000503003”的选修情况,包括学生学号、课程名、姓名和成绩。
create procedure Proc_SC
@stuid varchar(9)='000503003'
as
begin
SELECT Student.Stu_id,Course_name,Stu_name,grade
FROM Student,course,StudentGrade
WHERE Student.Stu_id=StudentGrade.Stu_id
and course.course_id=StudentGrade.course_id
and Student.Stu_id= @stuid
end
Go
exec Proc_SC @stuid='000503001'
3.修改上面的存储过程,并调用修改后的存储过程,求出学号为“000503002”学生的不及格课程的信息。
alter procedure Proc_SC
as
select StudentGrade.Stu_id,Course_name,Stu_name,Grade
from Student,StudentGrade,Course
where StudentGrade.Stu_id=Student.Stu_id and Student.Stu_id='000503002'
and Course.Course_id=StudentGrade.Course_id
and grade between 0 and 59
go
exec Proc_SC
4.编写存储过程Proc_jiecheng,求n!。并调用上面的存储过程,求5!。
create procedure Proc_jiecheng
@n int --此处声明的为输入参数
as
declare @i int --此处声明的为存储过程内部使用的变量
declare @sum bigint --此处声明的为存储过程内部使用的变量
set @i=1
set @sum=1
while @i<=@n
begin
set @sum=@sum*@i
set @i=@i+1
end
print @sum
Go
exec Proc_jiecheng 5
5.删除存储过程Proc_jiecheng。
drop procedure Proc_chengji
6.定义一函数(即存储过程),函数的自变量是学生的姓名(即输入参数),函数值是这个学生的总成绩。
(1)要求用输出参数输出学生的总成绩(输出参数是这个学生的总成绩)。
(2)不用输出参数的方法完成,在存储过程内部用print。
用(1)(2)2种方法分别完成,分别调用。对比区别
create procedure Proc_chengji1
@gradesum int output, --返回值,这个学生的总成绩
@name varchar(8) --此处声明的为输入, 学生的姓名
as
SELECT @gradesum=sum(grade)
FROM Student,StudentGrade
WHERE Student.Stu_id=StudentGrade.Stu_id
and Stu_name=@name
Go
declare @sum int
exec Proc_chengji @sum output, '陈四雯' --输出'陈四雯'同学的总成绩,返回结果将存放在变量@sum中
print '总成绩'+convert(varchar(5),@sum)
三、总结
这篇文章主要是对存储过程实验进行描述,需要适当理解其中的原理,再着手进行学习和实验。欢迎在评论区发表自己的意见!!!