【发布时间】:2019-11-10 21:14:24
【问题描述】:
我正在尝试使用以下代码在插入触发器后创建 Oracle:
CREATE OR REPLACE TRIGGER AutoManhour
AFTER INSERT ON TBL_MSTPROJECT
FOR EACH ROW
DECLARE
CURSOR c_Section IS
SELECT IDSECTION AS IDSECTION FROM TBL_MSTSECTIONHR;
v_Section c_Section%ROWTYPE;
BEGIN
OPEN c_Section;
LOOP
FETCH c_Section INTO v_Section;
INSERT INTO TBL_TRXMANHOURS (ID_SECTION,INPUTBY_TRXMANHOURS,INPUTON_TRXMANHOURS,ID_PROJECT)
VALUES (v_Section.IDSECTION,'IT_ROBOT',SYSDATE,:new.IDPROJECT);
END LOOP;
CLOSE c_Section;
END AutoManhour;
/
但它检索到一个错误:
ORA-04098: 触发器“DEPEEL.AUTOMANHOUR”无效且失败 重新验证
为什么会这样?
【问题讨论】:
-
对我来说,它不会从这个触发器中抛出任何错误,你能分享触发器中存在的表的最小 DDL
-
错误提示:PLS-00103:在预期以下情况之一时遇到符号“END”:( begin case declare exit for goto if loop mod null pragma raise return select update while with
-
它似乎与您遇到的错误没有任何关系,但您在这里呈现的是一个无限循环。你需要一个退出条件。或者使用隐式游标循环而不是显式游标来显着简化代码。
标签: oracle oracle11g triggers oracle10g database-trigger