2022年数据库实验七可用 .pdf
《2022年数据库实验七可用 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库实验七可用 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验项目名称:存储过程和触发器实验学时: 2 同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:一、实验目的和要求1、通过对常用系统存储过程的使用,了解存储过程的类型;2、通过创建和执行存储过程,了解存储过程的基本概念,掌握使用存储过程的操作技巧和方法;3、通过对已创建的存储过程的改变,掌握修改、删除存储过程的技巧;4、了解触发器的基本概念,理解触发器的功能;5、掌握创建、修改和删除和使用触发器的操作方法。二、实验设备、环境设备:奔腾或奔腾以上计算机;环境: WINDOWS 2000 SERVER或 WINDOWS 2003 SERVER 、SQL Server 2005 中文版
2、。三、实验步骤1、根据题目要求熟悉SQL Server 2005 的各种管理工具;2、分析题意,重点分析题目要求并给出解决方法;3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中;4、提交完成的实验结果。四、实验内容一、存储过程的类型。1、使用 sp_helptext查看 byroyalty存储过程的文本,该存储过程在数据库pubs 中。sp_helptext byroyalty; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 -
3、- - - - - - - - 二、创建与执行存储过程1、在 MyDB中创建存储过程proc_1 ,要求实现如下功能:产生学分为4 的课程学生选课情况列表, 其中包括课程号、课程名、 学分、 学号、 姓名、专业、 性别等。 并调用此存储过程,显示执行结果。create or replace PROCEDURE proc_1 as cno char(4);cname varchar(16);credit int;sno char(8);sname varchar(10);specially varchar(3);sex char(2); begin select o,ame,course.cre
4、dit,student.sno,student.sname,student.sex,class1.specially into cno,cname, credit,sno,sname,sex, specially from course,student,grade,class1 where o = o and student.sno = grade.sno and class1.clsno = student.clsno and course.credit = 4; end proc_1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
5、 - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 2、在 MyDB中创建存储过程proc_2 ,要求实现如下功能:输入专业名称,产生该专业学生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用此存储过程,显示“计算机应用”专业学生的选课情况列表。create or replace PROCEDURE proc_2(spec in varchar) as cno char(4);cname varchar(16);credit int;sno char(8);sname varchar(10);speci
6、ally varchar(3);score numeric(4,2); BEGIN select class1.specially,student.sno,student.sname,o, ame,grade.score,course.credit into specially,sno,sname,cno,cname,score,credit from class1,student,course,grade where student.sno = grade.sno and o = o and student.clsno = class1.clsno and class1.specially
7、= spec; end; 3、在 MyDB中创建存储过程proc_3 ,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分9, 则显示“此学生学分不足!” ,否则显示“此学生学分已足! ” ,并调用此存储过程,显示“19920102”学生的总学分情况。createprocedure proc_3( sno1 char( 8) asdeclareTotal tinyint; beginselect Total=sum( course. credit)from course, student, grade where student. sno = grade. sn
8、o and course. cno = grade. cno andstudent. sno = sno1 if Total 9 print 此学生学分不足 else名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - print 此学生学分已足 end ; exec proc_3 19920106三、修改存储过程1、对 MyDB中已创建的存储过程proc_1 进行修改,要求在显示列表中增加班级字段,即产生学分为“ 4”的课程学生选
9、课情况列表,其中包括课程号、课程名、学分、学号、姓名、专业、班级、性别等. alter PROCEDURE proc_1 as cno char(4);clsname char(10);cname varchar(16);credit int;sno char(8);sname varchar(10);specially varchar(3);score numeric(4,2); BEGIN select o,ame,course.credit,student.sno,student.sname,student.sex,class1.specially,class1.claname from
10、 course,student,grade,class1 where o = o and student.sno = grade.sno and class1.clsno = student.clsno and course.credit = 4; end; exec proc_1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 2、在 MyDB中创建的存储过程proc_2 进行修改,要求实现如下功能:输入专业名称,产生该专
11、业所有男生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用修改后的存储过程,显示“计算机应用”专业男生的选课情况列表。alter or replace PROCEDURE proc_2(spec in varchar) as cno char(4);cname varchar(16);credit int;sno char(8);sname varchar(10);specially varchar(3);score numeric(4,2); BEGIN select class1.specially,student.sno,student.sname,o, a
12、me,grade.score,course.credit from class1,student,course,grade where student.sno = grade.sno and o = o and student.clsno = class1.clsno and student.sex = 男 and class1.specially = spec;end; exec proc_2 计算机应用; 3、对 MyDB中已创建的存储过程proc_3 进行修改,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分9 then dbms_output.put(
13、 此学生所选学分为:); dbms_output.put(total); dbms_output.put_line( 此学生学分已足); else print 此学生所选学分为:; print total; print 此学生学分不足; end if; end proc_3; call proc_3(19920101); call proc_3(19920102); call proc_3(19940106); 四、删除存储过程:删除MyDB中的存储过程proc_1。drop procedure proc_1; 五、创建触发器1、创建触发器trigger_1, 实现当修改学生表(Student
14、)中的数据时,显示提示信息“学生情况表被修改了” 。create or replace TRIGGER TRIGGER_1 AFTER INSERT OR UPDA TE ON STUDENTBEGIN print 学生信息被修改了; END; insert into student values (19920103, 曹操 ,男,MT04, 江中路 39#,22-11 月-1993,1.88,8); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - -
15、- - - - - - 2、在 MyDB中创建触发器trigger_2,实现如下功能:当在学生成绩表(Grade)中删除一条学生选课信息后,自动实现更新该学生在学生情况表(Student) 中的总学分信息。create or replace TRIGGER TRIGGER_2 AFTER DELETE ON GRADE BEGIN update student set totalcreidt = (select sum(credit) from grade); END; delete from grade where score = 90; 3、创建触发器trigger_3, 实现当修改学生情
16、况表(Student)中的某个学生的学号时,对应学生成绩表 (Grade)中的学号也作修改。create or replace TRIGGER TRIGGER1 AFTER UPDA TE OF SNO ON STUDENTdeclare old_id char(8);new_id char(8); BEGIN update grade set sno= (select sno from inserted) where sno= (select sno from deleted); END; 六、修改触发器1、对已创建的触发器trigger_1 进行修改,实现当修改学生情况表(Student)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据库实验七可用 2022 数据库 实验 可用
限制150内