付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技学院计算机与通信工程系实 验 报 告实验项目使用游标、存储过程和触发器课程名称Oracle数据库成 绩时 间2012年12月 日 第 周 第 - 节地 点E305姓 名李敏华学 号201008003240班 级软件1002班一、实验要求在Oracle 10g中综合运用PL/SQL中各种程序控制结构、异常处理语句以及DML语句序编写实现游标、存储过程和触发器。二、实验目的(1) 了解游标的概念和工作原理。(2) 了解存储过程的分类和使用方法。(3) 了解触发器的概念。(4) 学习编写和执行自定义过程。(5) 学习创建和使用触发器。三、实验环境² 硬件设备:PC机一台²
2、 操作系统:Windows XP² 应用工具:Oracle 10g四、实验内容及结果(1) 创建游标mycur,从表employees中读取1号部门的员工姓名,职务。并输出“员工姓名:XXX,职务:XXX。”程序代码如下:SET ServerOutput ON; DECLARE CURSOR MyCur IS SELECT emp_id, emp_Name,title FROM LMH_40.employeeswhere emp_id=1;BEGIN FOR var_emptRecord IN MyCur LOOP dbms_output.put_line('员工编号:
3、9; | var_emptRecord.emp_Id |', 员工姓名:' | var_emptRecord.emp_Name|var_emptRecord.title|',职务'); END LOOP;END; 执行结果如下:1 / 5(2) 创建存储过程GetGrade,查询指定员工的工资,使用CASE语句输出其工资等级。工资小于等于3000,等级为“低”;工资大于3000,小于5000,等级为”中”;工资大于等于5000,等级为高。并执行该存储过程。创建存储过程代码如下: create or replace procedure LMH_40,getgrad
4、e(v_depid im munber)asv_wage LMH_40.employees.wage%type;v_grade varchar2(5);beginselect wage into v_wagefrom LMH_40.employeeswhere emp_id=v_depid;v_grade:=casewhen v_wage<=3000 then '低'when v_wage>=3000 and v_wage<5000 then '中'when v_wage>=5000 then '高'end;dbms_ou
5、tput,put_line('该员工工资等级为'|v_grade);end;执行存储过程代码如下:execute LMH_40.getgrade(3)执行结果如下:(3) 创建触发器MyTrigger,它的作用是当dhb.Departments中Dep_id列的值发生变化时,自动更新表Employees中的Dep_id列的值,从而保证数据完整性。程序代码如下:CREATE OR REPLACE TRIGGER LMH_40.MyTriggerAFTER UPDATE ON LMH_40.DepartmentsFOR EACH ROWBEGIN UPDATE LMH_40.Emp
6、loyees SET Dep_id = :new.Dep_id WHERE Dep_id = :old.Dep_id;END;验证触发器代码如下:UPDATE LMH_40.Departments SET Dep_id=200 WHERE Dep_id=1;Commit;SELECT Emp_name, Dep_id FROM LMH_40.Employees;执行结果如下:五、实验总结通过这次上机实验,我有以下收获:通过本次试验学习了对触发器,游标的创建和使用以及创建过程。但是还上机操作过程中还存在以下几个方面的不足:对这一部分的知识知之甚少,以后需对这部分知识加强学习和上机操作。六、教师评
7、语教师签字: 年 月 日 参考程序:典型游标FOR循环的语法说明如下:FOR <记录名> IN <游标名> LOOP 语句1; 语句2; 语句n;END LOOP; -结束程序体【例】/* 打开显示模式 */SET ServerOutput ON; DECLARE CURSOR MyCur IS -定义游标 SELECT Dep_id, Dep_Name FROM dhb.Departments;BEGIN -开始程序体 FOR var_DeptRecord IN MyCur LOOP /* 显示保存在记录变量var_DeptRecord中的数据 */ dbms_out
8、put.put_line('部门编号:' | var_DeptRecord.Dep_Id |', 部门名称:' | var_DeptRecord.Dep_Name); END LOOP;END; -结束程序体p CREATE PROCEDURE语句来创建过程:CREATE OR REPLACE PROCEDURE<过程名> <参数列表> IS | AS <局部变量声明> BEGIN <过程体>END <过程名> ;【例】创建示例过程SetDepName,此过程的功能是根据参数修改表Departments
9、中指定部门的部门名称:CREATE OR REPLACE PROCEDURE DHB.SetDepName( v_DepId IN NUMBER, v_DepName IN VARCHAR2)ASBEGIN UPDATE DHB.Departments SET Dep_name = v_DepName WHERE Dep_Id = v_DepId;END;/执行存储过程:Execute DHB.SetDepName(1,'人事部')p CREATE TRIGGER语句来创建触发器:CREATE OR REPLACE TRIGGER <触发器名> BEFORE | A
10、FTER INSERT | DELETE | UPDATE OF column , column OR INSERT | DELETE | UPDATE OF column , column . ON <表名>|<视图名> FOR EACH ROW WHEN <条件表达式> <PL/SQL程序体>|call procedure_name例:创建触发器MyTrigger,它的作用是当dhb.Departments中Dep_id列的值发生变化时,自动更新表Employees中的Dep_id列的值,从而保证数据完整性。CREATE OR REPLACE TRIGGER DHB.MyTriggerAFTER UPDATE ON DHB.DepartmentsFOR EACH ROWBEGIN UPDATE DHB.Employees SET De
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职第二学年(旅游服务与管理)旅游产品设计基础测试题及答案
- 2025年高职(机电一体化技术)传感器应用技术综合测试题及答案
- 行政助理职业发展指南
- 社群营销培训课件
- 2026四川巴中市公安局招聘警务辅助人员47人备考题库有完整答案详解
- 2025财达证券股份有限公司资产管理业务委员会招聘2人备考题库及答案详解一套
- 2026四川宜宾铭星中医医院人才招募中医医生、外科医生、编码员备考题库有完整答案详解
- 2026中国科学院软件研究所天基综合信息系统全国重点实验室招聘94人备考题库含答案详解
- 2026浙江温州市广播电视监测中心招聘编外合同制人员1人备考题库参考答案详解
- 2026云南大理州剑川县文化和旅游局招聘2人备考题库及答案详解一套
- 2025年中小学教师正高级职称评聘答辩试题(附答案)
- 现代企业管理体系架构及运作模式
- 2025年江苏省泰州市保安员理论考试题库及答案(完整)
- 公司酶制剂发酵工工艺技术规程
- 2025省供销社招聘试题与答案
- 大数据分析在供热中的应用方案
- 污泥安全管理制度范本
- 开题报告范文基于人工智能的医学像分析与诊断系统设计
- 大黄附子细辛汤课件
- 单位内部化妆培训大纲
- 高校行政管理流程及案例分析
评论
0/150
提交评论