Oracle存储过程_3

/*存储过程,触发器课后作业*/
--2 根据输入的雇员编号查找雇员,根据输入的薪金调整该雇员薪金
--创建存储过程
CREATE OR REPLACE PROCEDURE USP_UP_SAL(V_ID IN EMP.EMPNO%TYPE, --员工编号 (多个参数用“,”隔开)
V_NSAL IN EMP.SAL%TYPE --员工工资
) AS
BEGIN
UPDATE EMP SET SAL = V_NSAL WHERE EMPNO = V_ID;
DBMS_OUTPUT.PUT_LINE('该' || V_ID || '编号员工' || ',更改后的薪资是:' || V_NSAL);

END;

--调用存储过程
DECLARE US_ID EMP.EMPNO%TYPE := '&ID'; --员工编号
US_SAL EMP.SAL%TYPE := '&SAL'; --员工工资
BEGIN
USP_UP_SAL(US_ID, US_SAL);
END;

--5 将雇员表中雇员的加薪,减薪等工资变化记录到审计记录表中;
CREATE OR REPLACE TRIGGER TRI_EMP
AFTER UPDATE ON EMP
FOR EACH ROW
BEGIN
INSERT INTO AUDIT_EMP_CHANGE
(NAME, OLDSAL, NEWSAL, TIME)
VALUES
(:OLD.ENAME, :OLD.SAL, :NEW.SAL, :OLD.HIREDATE);
END;

--修改雇员工资
BEGIN
UPDATE EMP SET SAL = SAL + 100 WHERE EMPNO = 7935;
END;

SELECT * FROM AUDIT_EMP_CHANGE; --查询

DROP TRIGGER TRI_EMP; --删除触发器

CREATE TABLE AUDIT_EMP_CHANGE( --创建审计记录表
NAME VARCHAR2(10), --雇员名称
OLDSAL NUMBER(6, 2), --改前薪水
NEWSAL NUMBER(6, 2), --改后薪水
TIME DATE --修改时间
);

posted @ 2014-09-03 10:46  flay  阅读(199)  评论(0)    收藏  举报