Oracle实验报告(8)

2020-04-17 03:21

BEGIN

OPEN XS_CUR3;

FETCH XS_CUR3 INTO v_xh,v_xm,v_cj; WHILE XS_CUR3%FOUND LOOP

dbms_output.put_line (v_xh||' '||TO_CHAR(v_xm)||v_cj); FETCH XS_CUR3 INTO v_xh,v_xm,v_cj; END LOOP;

CLOSE XS_CUR3; END;

存储过程 例子1: CREATE OR REPLACE PROCEDURE update_info ( xname in char ) AS

xf number;

BEGIN

SELECT ZXF

INTO xf FROM XS

WHERE XM=xname;

IF XF>60 THEN UPDATE XSB SET BZ='三好学生'

WHERE XM= xname;

第31页

END IF; IF XF<35 THEN UPDATE XS SET BZ='学分未修满'

WHERE XM=xname;

END IF;

END update_info;

执行:

(1)EXECUTE update_info('李明'); (2)begin

update_info('李明'); end; 例子2: CREATE OR REPLACE PROCEDURE count_grade ( zym in char,person_num out number ) AS BEGIN SELECT COUNT(XH) INTO person_num FROM XS

WHERE ZYM=zym;

END count_grade;

第32页

执行:

set serveroutput on DECLARE v_num number; BEGIN

count_grade('计算机',v_num); dbms_output.put_line(v_num); END; /

1. 创建一个存储过程p_delete可以删除CJB表的信息。 CREATE OR REPLACE PROCEDURE p_delete AS

BEGIN

delete FROM CJB; END p_delete; 执行

EXECUTE p_delete;

2. 创建一个存储过程p_insert,可以给学生表添加一条记录。 CREATE OR REPLACE PROCEDURE p_insert

(XH IN CHAR,XM IN CHAR,XB IN CHAR,CSSJ IN DATE,ZY IN CHAR,ZXF IN NUMBER,BZ IN CHAR)

AS BEGIN

insert into xsb values(XH,XM,XB,CSSJ,ZY,ZXF,BZ); END p_insert; 执行:

execute p_insert('102222','罗','女

',to_date('19860310','yyyymmdd'),'通信工程',50,'转专业学习');

第33页

3. 创建一个存储过程p_count,输入参数为姓名,输出参数为选课门数,

平均成绩。 CREATE OR REPLACE PROCEDURE p_count

(XNO IN CHAR,K_COUNT OUT NUMBER,AVG_CJ OUT NUMBER) BEGIN

SELECT count(kch),avg(cj) INTO K_COUNT,AVG_CJ FROM XSB,CJB

WHERE XSB.XH=CJB.XH AND

XSB.XH=XNO; END p_count;

set serveroutput on DECLARE

v_num1 number;

v_num2 number(4,2); BEGIN

p_count('101104',v_num1,v_num2);

dbms_output.put_line(v_num1||' '||v_num2); END;

四、上机作业

完成实验内容中的任务,并把语句记录在每道题的下面。 五、心得体会

通过这次学习,我知道了游标和存储过程,还知道了游标和存储过程的使用方法,并且掌握了它们的使用方法,为以后打下基础。

实验九:触发器、用户角色创建和逻辑备份

第34页

一、实验目标:

(1)掌握触发器的使用。

(2)掌握用户和角色的创建和使用。 (3)掌握数据表的导入导出。 二、实验学时数 2学时

三、实验步骤和内容: (一)触发器

例子1: 假设XSCJ数据库中增加一个新表XSB_HIS,表结构和表XSB相同,用来存放从XSB表中删除的记录。创建一个触发器,当XSB表被删除一行,把删除的记录写到日志表XSB_HIS中。

CREATE OR REPLACE TRIGGER del_xs

BEFORE DELETE ON XSB FOR EACH ROW

BEGIN

INSERT INTO XSB_HIS (XH,XM, XB,CSSJ, ZY, ZXF,BZ)

VALUES(:OLD.XH,:OLD.XM, :OLD.XB, :OLD.CSSJ, :OLD.ZY, :OLD.ZXF, :OLD.BZ);

END;

1.创建一个触发器,当XSB表删除一个人时,把这个人的选课信息也删掉。 CREATE OR REPLACE TRIGGER del_xs

BEFORE DELETE ON XSB FOR EACH ROW

BEGIN

第35页


Oracle实验报告(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2008第七届中学生古诗文高中文言文阅读训练70篇原文及翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: