一、实验目的
本实验的目的是使学生进一步掌握 SQL Server 存储过程的创建及使用方法,加深对 SQL存储过程的理解。通过对存储过程的调用体会其作用。
二、实验准备
结合课堂教学内容,了解存储过程的相关知识,掌握存储过程的定义,理解存储过程的调用及其参数的使用方法。
三、实验要求
- 掌握 T-SQL 创建触发器语句 Create procedure 的使用。
- 完成所规定的存储过程定义要求。
- 调用(EXEC)所创建的过程,检查过程的执行结果。
- 注意操作结果的截图与保存,供撰写实验报告使用。
四、实验内容
- 创建一个不带参数的存储过程 p_stu_info1,实现对满足要求的学生基本信息的查询。
要求:所有年龄<21 岁的男同学 - 创建一个带有参数的存储过程 p_stu_info2,实现对满足要求的学生基本信息的查询。
要求:输入参数为学号,与指定学号的学生同龄的所有同学。 - 创建一个存储过程 p_stu_info3,根据输入的学号,查询某学生的基本信息。
要求:输入参数为学号。 - 创建一个存储过程 p_stu_grade,根据输入的学号,返回其选课及其成绩。
要求:输入参数为学号。 - 使用 SQL 语句分别执行 p_stu_info1、p_stu_info2
p_stu_info3 和 p_stu_grade,并查看显示结果。
五、实验步骤
--创建一个不带参数的存储过程 p_stu_info1,实现对满足要求的学生基本信息的查询。
--要求:所有年龄<21 岁的男同学
create procedure p_stu_info1
as begin
select*from student where sage<21 and Sex='男';
end
--创建一个带有参数的存储过程 p_stu_info2,实现对满足要求的学生基本信息的查询。
--要求:输入参数为学号,与指定学号的学生同龄的所有同学
create procedure p_stu_info2
@findsno char(8)
as begin
select*from student where Sage=(select Sage from student where Sno =@findsno);
end
--创建一个存储过程 p_stu_info3,根据输入的学号,查询某学生的基本信息。
--要求:输入参数为学号
create procedure p_stu_info3
@findsno char(8)
as begin
select*from student where Sno=@findsno;
end
--创建一个存储过程 p_stu_grade,根据输入的学号,返回其选课及其成绩。
--要求:输入参数为学号
create procedure p_stu_grade
@findsno char(8)
as begin
select Cname,Score from course inner join sc on sc.Cno=course.Cno where Sno=@findsno;
end
--使用 SQL 语句分别执行 p_stu_info1、p_stu_info2
--p_stu_info3 和 p_stu_grade,并查看显示结果。
exec p_stu_info1
exec p_stu_info2 '********'
exec p_stu_info3 '********'
exec p_stu_grade '********'