0
我有这个简单的触发器,它的工作,但它给了我几个错误。语法似乎是正确的。简单的oracle触发器的作品,但给我的错误
这是我的代码:
create or replace
TRIGGER max_raise
BEFORE UPDATE ON empcopy
FOR EACH ROW
DECLARE
v_max NUMBER := 3000;
BEGIN
IF :new.sal > v_max THEN
raise_application_error(-20002, 'Cannot exceed max value of ' || v_max);
END IF;
END;
这是我的错误:
DECLARE
*
ERROR位于第1行:
ORA-20002 :不能超过最大值3000
ORA-06512:在 “SYSTEM.MAX_RAISE”,第5行
ORA-04088:触发器 'SYSTEM.MAX_RAISE' 的执行期间错误
ORA-06512:在第11行
这是我一起使用的pl/sql代码。
DECLARE
v_raise NUMBER;
CURSOR cur1 IS
SELECT a.deptno, a.sal, a.empno, a.ename
FROM empcopy a;
BEGIN
FOR emp IN cur1 LOOP
v_raise := external_raise(emp.deptno, emp.sal);
DBMS_OUTPUT.PUT_LINE('The Employee: ' || emp.ename || ' new salary: '
|| v_raise || ' the previous one was: ' || emp.sal);
UPDATE empcopy SET sal = v_raise WHERE empno = emp.empno;
END LOOP;
END;
我不是一个plsql专家,但不是你的代码抛出错误? –
让我用我正在使用的pl/sql代码进行更新。 –
这是你的异常被提出。抓住它并在调用块中打印一条消息。或者,如果你想继续通过其他记录,可以用'begin''异常'块来包装update语句。 – Glenn