【发布时间】:2015-03-26 14:08:19
【问题描述】:
我正在我的数据库中创建一个触发器,我遇到了两个我无法修复的错误,我很确定这两个与我对 DBMS_OUTPUT.PUT_LINE 的使用有关,该语句的其余部分不会导致任何错误,尽管它之前有过。
错误:
错误(5,3):PL/SQL:SQL 语句被忽略
错误(5,15):PL/SQL:ORA-00903:无效的表名
代码:
CREATE TRIGGER INVOICES
BEFORE INSERT OR UPDATE ON BRUINVOICE
FOR EACH ROW
BEGIN
IF :new.BRU_DATE < :new.BRU_PAID_DATE THEN
DBMS_OUTPUT.PUT_LINE('You cannot do that');
ELSE
INSERT INTO table BRUINVOICE
values
from inserted;
END IF;
END;
【问题讨论】:
-
您的
INSERT没有意义。INSERT语句中没有table关键字,您似乎不太可能创建了一个名为inserted的表来进行选择,如果您打算从另一个表中进行选择,则需要一个INSERT ... SELECT.但是,由于您显然是插入到定义触发器的同一个表中,所以我很难想象您要完成什么。也许您想引发错误而不是写信给dbms_output并完全删除ELSE子句?
标签: sql oracle plsql triggers dbms-output