文档详情

《Oracle数据库》实验资料.doc

发布:2017-08-21约7.58千字共20页下载文档
文本预览下载声明
实验二 Oracle数据库开发环境下PL/SQL编程 (2学时) 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 实验内容: 1、用PL/SQL实现:输入eno的值,显示emp表中对应记录的内容。 2、用PL/SQL完成:读入三个数,计算并输出它们的平均值及三个数的乘积。 3、对职工表emp中的雇员SCOTT提高奖金,若工种为MANAGER,则奖金提高其原来的20%;若工种为SALESMAN,则奖金提高其原来的15%;若工种为ANALYST,则奖金提高其原来的10%,其它都按原来的7%提高。 4、用PL/SQL块实现下列操作 公司为每个职工增加奖金:若职工属于30号部门,则增加$150;若职工属于20号部门,则增加$250;若职工属于10号部门,则增加$350。(提示:游标请自行阅读相关内容) DECLARE addcomm m%type; CURSOR emp_cursor IS select deptno from emp; BEGIN FOR emprec IN emp_cursor LOOP IF emprec.deptno=30 THEN addcomm:=150; ELSIF emprec.deptno=20 THEN addcomm:=250; ELSIF emprec.deptno=10 THEN addcomm:=350; END IF; Update emp set comm=comm+ addcomm where deptno= emprec.deptno; END LOOP; COMMIT WORK; END; 实验三 PL/SQL触发器和存储过程 (2学时) 【实验目的】 (1)了解触发器的类型。 (2)掌握PL/SQL触发器的使用方法。 (3)了解存储过程的使用方法。 (4)掌握存储过程的使用方法。 【实验内容】 实验内容: 1、编写一个数据库触发器,当任何时候某个部门从dept表中删除时,该触发器将从emp表中删除该部门的所有雇员。(要求:emp表、dept表均为复制后的表) CREATE OR REPLACE TRIGGER del_emp_deptno BEFORE DELETE ON dept FOR EACH ROW BEGIN DELETE FROM emp WHERE deptno=:OLD.deptno; END; 2、创建触发器,当用户对test表执行DML语句时,将相关信息记录到日志表--创建测试表CREATE TABLE test ( t_id?? NUMBER(4), t_name VARCHAR2(20), t_age NUMBER(2), t_sex CHAR ); --创建记录测试表 CREATE TABLE test_log( l_user?? VARCHAR2(15), l_type?? VARCHAR2(15), l_date?? VARCHAR2(30) ); --创建触发器CREATE OR REPLACE TRIGGER test_trigger AFTER DELETE OR INSERT OR UPDATE ON test DECLARE v_type test_log.l_type%TYPE; BEGIN IF INSERTING THEN --INSERT触发?? v_type := INSERT; ?? DBMS_OUTPUT.PUT_LINE(记录已经成功插入,并已记录到日志);ELSIF UPDATING THEN --UPDATE触发?? v_type := UPDATE; ?? DBMS_OUTPUT.PUT_LINE(记录已经成功更新,并已记录到日志);ELSIF DELETING THEN ?? v_type := DELETE; ?? DBMS_OUTPUT.PUT_LINE(记录已经成功删除,并已记录到日志);END IF; INSERT INTO test_log VALUES(user,v_type, ??????? TO_CHAR(sysdate,yyyy-mm-dd hh24:mi:ss)); END; / --下面我们来分别执行DML语句 INSERT INTO test VALUES(101,zhao,22,M);UPDATE test SET t_age = 30
显示全部
相似文档