【SQL】实验十五 存储过程的使用

本文介绍了如何使用SQL进行存储过程的创建、执行、修改和删除操作。实验内容包括查看课程选修情况、按学号查询选修记录、修改存储过程获取不及格课程信息、计算阶乘以及定义函数获取学生总成绩。实验详细阐述了存储过程的实用性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的

1. 掌握存储过程的概念,熟悉使用存储过程来进行数据库应用程序的设计。

2. 掌握存储过程的创建、使用和删除。

 

二、实验内容及要求

本实验使用数据库为SCHOOL数据库。

1.创建一个存储过程Proc_Course,查看“0108”号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;

创建:

create procedure proc_course
as
select student.stu_id,stu_name,grade
from student join studentgrade on student.stu_id=studentgrade.stu_id
where course_id='0108'

执行: 

execute proc_course

2.创建一个存储过程Proc_SC1,通过学生学号来查询学生选修情况,默认查询学号为“000503003”的选修情况,包括学生学号、课程名、姓名和成绩。

create procedure Proc_SC1
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
execute Proc_SC1

结果如下,刚开始展现第一张图片,然后跳到第二张图片

 

 

3.修改上面的存储过程,并调用修改后的存储过程,求出学号为“000503002”学生的不及格课程的信息。

alter procedure Proc_SC1
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<60
execute Proc_SC

4.编写存储过程Proc_jiecheng,求n!。并调用上面的存储过程,求5!。

create proc 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
exec proc_jiecheng 5

5.删除存储过程Proc_jiecheng。

drop procedure Proc_jiecheng

6.定义一函数(即存储过程),函数的自变量是学生的姓名(即输入参数),函数值是这个学生的总成绩。

用(1)(2)2种方法分别完成,分别调用。对比区别

(1)要求用输出参数输出学生的总成绩(输出参数是这个学生的总成绩)。

create proc proc_Stu1
@stuname varchar(5),
@stugrade Smallint output
as
select @stugrade=sum(Grade)
from Student,StudentGrade
where Student.Stu_id=StudentGrade.Stu_id and Stu_name=@stuname
declare @g Smallint --定义一个变量接收@stugrade的数据
exec proc_Stu1 '陈培军',@g output

打印不出成绩,已经验证Student表中含有陈培军

  

(2)不用输出参数的方法完成,在存储过程内部用print。

create proc proc_Stu2
@stuname varchar(5)
as
declare @stugrade Smallint
select @stugrade=sum(Grade)
from Student,StudentGrade
where Student.Stu_id=StudentGrade.Stu_id and Stu_name=@stuname
print @stugrade
exec proc_Stu2 '陈培军'

也打印不出成绩

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛酸菜吃鸭子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值