【发布时间】:2018-03-24 07:05:56
【问题描述】:
我有一个带有 SALARY 字段的 EMPLOYEE 表。我正在使用 Oracle SQL 开发人员。我想编写一个触发器,以便当有人在 EMPLOYEE 表中更新薪水时,它将 EMPLOYEE_SALARIES 表中的薪水字段更新为低、中、高。这是第二张表。
CREATE TABLE Employee_Salaries(
Ssn CHAR(9) NOT NULL,
Salary VARCHAR(10),
Log_Date DATE
);
以下是将 Salary 字段更新为低、中或高的触发器和过程。
CREATE OR REPLACE PROCEDURE salaryType(x IN NUMBER, y OUT VARCHAR) IS
BEGIN
IF x >= 60000 THEN y := 'HIGH';
ELSIF (x >= 40000 AND x <= 60000) THEN y := 'MEDIUM';
ELSE y := 'LOW';
END IF;
END salaryType;
/
我在此触发器上收到编译器错误。请告诉我我做错了什么或者我遗漏了什么。
CREATE OR REPLACE TRIGGER salary1
AFTER INSERT OR UPDATE ON Employee
FOR EACH ROW
BEGIN
DECLARE
salaryRank VARCHAR(10) := ' ';
salaryType(:new.Salary, salaryRank);
INSERT INTO Employee_Salaries(Ssn, Salary, Log_Date) VALUES (:new.Ssn, salaryRank, SYSDATE);
END;
/
【问题讨论】:
标签: oracle plsql triggers database-trigger