数据库实验七八1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七触发器的建立与使用
一.实验目的:
理解并掌握利用Oracle11g 或者SQL Server 数据库库服务器的触发器的建立与使用,并理解其概念以及内部工作机制、出发条件。能够熟悉用Oracle11g 或者SQL SERVER的查询分析器以及向导进行触发器脚本程序的书写,理解inserted表和deleted表的用途。
二.实验属性:
设计性。
三.实验要求
1、设置一个触发器,该触发器仅允许“dbo”用户可以删除student表内数据的,否则出错。
2、设置一个针对student表的触发器,当有人操作该列值时,触发器将自动将该操作者的名称和操作时间记录在日志表内,以便追踪。
3、针对student表写一个DELETE触发器。
4、针对student表写一个UPDATE触发器。
四.实验步骤
1、创建一个触发器,对turing1用户下的sc表,不允许删除学号为200400812142的学生记录。
在数据字典中查看已经定义的触发器
验证设置的触发器是否起作用
删除触发器:
2、创建一个触发器,对turing1用户下的student表,不允许更新'计科系' 的学生记录。
在数据字典中查看已经定义的触发器
验证设置的触发器是否起作用
删除触发器
实验八存储过程建立与调用
一.实验目的:
对于Oracle11g,掌握Oracle11g的存储过程的建立。使用SQL PLUS和SQL Developer进行存储过程的建立。
对于SQL Server,理解并掌握利用SQL Server 数据库库服务器的存储过程的建立与调用,并理解概念。能够熟悉用数据库一种开发平台进行存储过程的调用。
二.实验属性:
设计性。
三.实验仪器设备及器材:
1.安装有windows操作系统计算机。
2.安装有Oracle11g或SQL Server的计算机。
3.安装有Visual Studio .net和Java编译器(eclipse、
Netbean等)的编译器。
4.计算机具备网络环境。
四.实验要求
1、利用存储过程,给student表添加一条学生信息。
2、利用存储过程从student、course、sc表的连接中返回所有学生的学号、姓名、所选课程及成绩。
3、用存储过程查找“刘刚”的学号、所选课程、成绩。
4、用存储过程查找姓“李”并且性别为“男”的学生的学号、
所选课程、成绩。
5、利用存储过程计算出平均成绩大于k分(0 的学号、姓名。 以上要求需要与.net和Delphi开发平台结合,调用所建立的存储过程,将结果显示出来,可以在一个工程里完成,也可以在多个工程里完成。 6. 提交实验报告要分别进行叙述。 五.实验步骤及过程 1、利用存储过程,给student表添加一条学生信息。 create or replace procedure turing.Insert_student( s_sno in varchar2, s_sname in varchar2, s_ssex in varchar2, s_sage in number, s_sdept in varchar2) as begin insert into turing.student(sno,sname,ssex,sage,sdept) values(s_sno,s_sname,s_ssex,s_sage,s_sdept); end Insert_student; / 2、利用存储过程从student、course、sc表的连接中返回所有学生的学号、姓名、所选课程及成绩。 3、用存储过程查找“刘波”的学号、所选课程、成绩。 create or replace procedure turing.liuboinfo( s_sno out student.sno%type, s_sname out student.sname%type, c_cname out ame%type, sc_grade out sc.grade%type) as begin select student.sno,student.sname,ame,sc.grade into s_sno,s_sname,c_cname,sc_grade from turing.student,turing.course,turing.sc where student.sno=sc.sno and o=o and sname='刘波'; end liuboinfo; / 4、用存储过程查找姓“李”并且性别为“男”的学生的学号、所选课程、成绩。 create or replace procedure turing.liinfo as s_sno student.sno%type; s_sname student.sname%type; c_cname ame%type; sc_grade sc.grade%type; begin select student.sno,student.sname,ame,sc.grade into s_sno,s_sname,c_cname,sc_grade from turing.student,turing.course,turing.sc