《Oracle数据库》实验资料.doc
文本预览下载声明
实验二 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
显示全部