【发布时间】:2014-12-02 10:32:45
【问题描述】:
我对 Oracle 比较陌生,所以请原谅我缺乏知识。每当触发此触发器时,我都会收到一条错误消息,指出我有一个未处理的用户定义异常。在我的函数和过程的其他地方,我已经完全声明并提出了我的用户定义,但在这种情况下是行不通的。我知道这可能是微不足道的事情,但正如我所说,我对 Oracle 还很陌生,所以请原谅我。
CREATE OR REPLACE TRIGGER PROGRAMME_BI
BEFORE INSERT ON PROGRAMME
DECLARE
v_run_time programme.run_time%TYPE;
INVALID_DURATION EXCEPTION;
BEGIN
IF v_run_time > 5 THEN
DBMS_OUTPUT.PUT_LINE('Program duration is valid');
COMMIT;
ELSE
RAISE INVALID_DURATION;
END IF;
EXCEPTION
WHEN INVALID_DURATION THEN
RAISE_APPLICATION_ERROR(-20001,'Program duration is not long enough');
ROLLBACK WORK;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE||SQLERRM);
END;
更新 我在引发异常后更新了该行,因此它不再给我未处理的用户定义异常错误。但是,它仍然无法按预期工作。每当我输入大于 5 的程序持续时间时,我都会在 DBMS 输出窗口中看到以下内容。
-20001ORA-20001: Program duration is not long enough
ORA-06512: at "DT2113A.PROGRAMME_BI", line 13
ORA-04088: error during execution of trigger 'DT2113A.PROGRAMME_BI'
Program not added
【问题讨论】:
-
抱歉!正如我所说,我对整个事情都是新手!我认为 MySQL 是语言,Oracle 是程序。你能帮我解决我的问题吗?
-
MySQL 是 Oracle 公司拥有的开源 DBMS。术语“Oracle”通常是指名为“Oracle”的 DBMS,Oracle 中存储过程和触发器中使用的语言是 PL/SQL
-
好的,感谢您的澄清!我在您的个人资料中注意到您对该主题非常了解,因此非常感谢您对这个问题的帮助
标签: oracle exception plsql triggers