触发并显示光标错误:触发无效,并且重新验证失败

时间:2019-06-29 03:40:30

标签: oracle oracle11g triggers oracle10g database-trigger

我尝试使用以下代码在插入触发器之后创建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”无效且失败   重新验证

为什么会这样?

1 个答案:

答案 0 :(得分:0)

我认为在将数据插入TBL_TRXMANHOURS时,您一定使用了错误的列/表名或使用了错误的数据类型。当然,有一个无限循环,您应该设定一些条件使其变为有限状态

Oracle将尝试重新编译引用的无效对象。这里的触发器无效

select * from user_errors where type = 'TRIGGER' and name = 'AUTOMANHOUR'

您可以尝试上述查询以查找实际错误。

干杯!