中南大学oracle实验报告.docx
文本预览下载声明
《大型数据库技术》实验报告项目名称 自动编号问题 专业班级 学 号 姓 名 柳明 实验成绩:批阅教师:年月 日实验一《搭建/熟悉环境;验证例题、习题》实验学时: 2 实验地点: 实验日期: 一、实验目的存储过程的综合练习。二、实验内容创建Oracle数据库(使用DBCA)实例名:orcl密码:orcl创建用户(DBA)创建emp和dept表,并插入数据使用demobld.sql脚本注意nls_date_language设置熟悉Oracle目录结构、基本操作熟悉SQL*Plus、PL/SQL Developer环境调试、运行课堂PPT上的例题(2个)、习题(2个)涵盖:过程/函数,触发器,包;异常处理,游标,Bulk处理,绑定变量实验二《自动编号问题》实验学时: 2 实验地点: 实验日期: 一、实验目的存储过程的综合练习。二、实验内容医院门诊挂号,要求号连续,并且退的号要能重用。每次挂号向号表中插入一条记录,退号从号表中删除一条记录,请设计一个方案来实现。可以考虑sequence挂号、退号均使用存储过程create table hos_rec(id number(10) primary key, --连续号section varchar2(20), --挂号科室register_date date --挂号日期 ); 三、实验步骤1、创建表create table hospital( id number(10) not null, section varchar2(20), --挂号科室 register_date date );2、创建sequenceCREATE SEQUENCE id_Sequence minvalue 1 nomaxvalue INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOCYCLE ; -- 一直累加,不循环3、创建插入记录的存储过程create or replace procedure insert_hospital(new_section varchar2)isnew_date date;new_id number(10);id_temp number(10) :=1;cursor id_cursor is select id from hospital;begin for id_loop in id_cursor loop exit when id_loop.id != id_temp; id_temp :=id_temp + 1; end loop; select id_Sequence.nextval into new_id from dual; if new_id id_temp then insert into hospital values(new_id,new_section,sysdate); else insert into hospital values(id_temp,new_section,sysdate); end if; --select sysdate into new_date from daul; --insert into hospital values(new_id,new_section,sysdate); commit;end;4、创建删除记录的存储过程create or replace procedure delete_hospital(new_id number)isbegin --select id_Sequence.nextval into new_id from dual; --select sysdate into new_date from daul; delete from hospital where id=new_id; commit;end;实验结果:插入记录:exec insert_hospital(眼科); --运行5次后删除记录:exec delete_hospital(2);exec delete_hospital(3);再次插入记录:exec insert_hospital(眼科);实验小结:一开始和sequence搭配使用了触发器,后来使用存储过程的时候没用到触发器,就删掉了触发器。Sequence不需要一定和触发器搭配使用。实验三《考生分类问题》实验学时: 2 实验地点: 实验日期: 一、实验目的存储过程以及游标的练习二、实验内容某高校的研究生招生系统,要求对考生的成绩进行处理,根据每门专业课的最低分数线和总分的最低分数线自动将考生归类为录取考生或落选考生。字段名注释SID考生编号SName考生姓名Engli
显示全部