实验十五 存储过程的使用

本文介绍了数据库实验,重点在于存储过程的运用。实验涵盖了创建、修改和删除存储过程,例如Proc_Course显示特定课程选修情况,Proc_SC按学号查询选修,Proc_SC修改后查询不及格课程,Proc_jiecheng计算阶乘,以及Proc_chengji获取学生总成绩。实验旨在帮助读者理解和掌握存储过程的基本操作和应用。

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

系列文章目录



一、实验目的

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)

三、总结

这篇文章主要是对存储过程实验进行描述,需要适当理解其中的原理,再着手进行学习和实验。欢迎在评论区发表自己的意见!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值