数据库原理与应用--实验八

文章详细描述了如何在SQL中创建一系列存储过程,包括查询学生选课信息、统计选修人数、成绩评估以及数据插入等操作。还涉及了存储过程的删除与创建检查。
摘要由CSDN通过智能技术生成

实验内容:

  1. 创建一个存储过程,查看001号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
  2. 创建一个存储过程,通过学生学号来查询学生选修情况,包括学生学号、姓名和成绩,然后执行该过程;
  3. 创建一个存储过程,通过学生学号来查询学生选修情况,默认查询学号为00001的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
  4. 创建一个存储过程,获得选修某门课程的总人数,然后再执行该过程后把总人数显示出来;
  5. 创建一个存储过程,通过学号和课程号进行成绩查询,如果查询结果为空,则显示“该学生没有选这门课”,返回0,如果查询结果低于60分,则显示“该学生考试成绩不及格”,返回1,如果查询结果在60-85之间,则显示“该学生考试成绩为良”,返回2,如果查询结果大于85,则显示“该学生考试成绩为优秀”,返回3;然后执行该过程查询学号00001的选课成绩,并把返回结果显示出来;
  6. 通过对象资源管理器创建问题5的存储过程,创建成功后使用T-SQL执行该过程查询学号00001的选课成绩,并把返回结果显示出来;
  7. 设计存储过程,完成对SC表的元组插入工作。要求使用输入参数。插入操作成功返出状态值0,失败返出状态值-1。执行存储过程,如果返回状态值为0,输出“数据插入成功”,否则输出“数据插入失败”(使用@@error来判断是否成功);
  8. 创建一个名为student01的存储过程,该存储过程能查询出系号为01学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息(提示:使用sysobjects来查询该存储过程是否存在);

     9. 讨论存储过程和自定义函数的区别。

源代码:

1.创建一个存储过程,查看001号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
create procedure q1
as
select Student.SNo,SName,score
from Student join sc on
Student.SNo = sc.SNo
where CNo = '001'
go
execute q1

2.创建一个存储过程,通过学生学号来查询学生选修情况,包括学生学号、姓名和成绩,然后执行该过程
go
create procedure q2 @cnumber char(5)
as
select Student.SNo,SName,score
from Student join sc on
Student.SNo = sc.SNo
where Student.SNo=@cnumber
go
execute q2 '00001'

3.创建一个存储过程,通过学生学号来查询学生选修情况,默认查询学号为00001的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
go
create procedure q3 @cnumber char(5)='00001'
as
select Student.SNo,SName,score
from Student join sc on
Student.SNo = sc.SNo
where Student.SNo=@cnumber
go
execute q3 '00002'
execute q3

4.创建一个存储过程,获得选修某门课程的总人数,然后再执行该过程后把总人数显示出来;
go
create procedure q4 @cnumber char(5),@ccount int output
as
select @ccount=count(*)
from sc 
where cno=@cnumber
go
declare @ccount int
execute q4 '002',@ccount output
select @ccount

5.创建一个存储过程,通过学号和课程号进行成绩查询,如果查询结果为空,则显示“该学生没有选这门课”,返回0,如果查询结果低于60分,则显示“该学生考试成绩不及格”,返回1,如果查询结果在60-85之间,则显示“该学生考试成绩为良”,返回2,如果查询结果大于85,则显示“该学生考试成绩为优秀”,返回3;然后执行该过程查询学号00001的选课成绩,并把返回结果显示出来;
go
create procedure q5 @sno char(5),@cno char(3)
as 
declare @a int 
select @a=score
from sc
where cno=@cno and sno=@sno
if @a=null
begin print '该学生没有选这门课'
return 0
end
else if @a<60
begin print '该学生考试成绩不及格'
return 1
end
else if @a < 85
begin print '该学生考试成绩为良'
return 2
end
else
begin print '该学生考试成绩为优'
return 3
end
go 
declare @结果 int
exec @结果=q5'00001','001'
print @结果

6.通过对象资源管理器创建问题5的存储过程,创建成功后使用T-SQL执行该过程查询学号00001的选课成绩,并把返回结果显示出来;
go
declare @结果2 int
exec @结果2 = q5 '00001','005'
print @结果2

7.设计存储过程,完成对SC表的元组插入工作。要求使用输入参数。插入操作成功返出状态值0,失败返出状态值-1。执行存储过程,如果返回状态值为0,输出“数据插入成功”,否则输出“数据插入失败”(使用@@error来判断是否成功);
go
create procedure q7 @sno char(5),@cno char(5),@score int
as
insert into sc
values (@sno , @cno , @score)
if @@error <> 0
return -1
else 
return 0
go
declare @b int
execute @b=q7 '00031','001','90'
if @b =0
print '数据插入成功'
else
print'数据插入失败'
execute @b = q7 '00030', '004', 90
if @b = 0
print '数据插入成功'
else
print '数据插入失败'

8.创建一个名为student01的存储过程,该存储过程能查询出系号为01学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息(提示:使用sysobjects来查询该存储过程是否存在);
if exists(select * from sysobjects where type = 'C' and name='student01')
begin
 drop procedure student01
 print '已删除!'
end
else
 print '不存在,可创建!'

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值