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 --修改时间
);

浙公网安备 33010602011771号