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页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Oracle实验报告(8)在线全文阅读。
相关推荐: