【发布时间】:2021-08-24 03:52:27
【问题描述】:
我需要更新部门 30 的员工工资。部门 30 的所有员工的工资将增加 20%。我在执行代码时遇到了错误。
这是我的代码:
DECLARE
CURSOR cur_emp
IS
SELECT * FROM employees WHERE department_id = 30;
rec_emp cur_emp%rowtype;
BEGIN
OPEN cur_emp;
LOOP
FETCH cur_emp INTO rec_emp;
IF rec_emp.department_id = 30 THEN
UPDATE employees
SET salary = salary + (salary * 0.20)
WHERE employee_id = rec_emp.employee_id;
END IF;
EXIT
WHEN cur_emp%notfound;
END LOOP;
CLOSE cur_emp;
END;
/
【问题讨论】:
-
错误是什么?
-
ORA-04098:触发器 'HR.TRIG_CHK_SAL' 无效并且重新验证失败 ORA-06512:在第 11 行
-
好的。所以有一个名为
TRIG_CHK_SAL的触发器未显示,可能是在employees表上定义的,它有语法错误。该问题与您的匿名块无关。这是那个触发器的问题。 -
那么我如何在不遇到 trig_chk 的情况下将员工工资从 dept=30 更新 20%?
-
我用 ALTER TRIGGER trig_chk_sal DISABLE 禁用了 trig_chk_sal;
标签: oracle plsql oracle11g sql-update