Oracle触发一个Insert循环

时间:2015-06-03 12:05:27

标签: oracle triggers oracle12c

我正在尝试在Oracle 12c中创建此触发器,但是当我尝试编译时我得到了这个错误:pls-00382表达式是错误的类型游标

create or replace TRIGGER TRIGGER1 
AFTER INSERT ON BUDGETITEMS 
FOR EACH ROW
BEGIN
FOR I IN 
(select PARENTITEM
from BUDGETITEMS
where PARENTITEM is not null
START WITH item IN (:new.ITEM)
connect by prior PARENTITEM = ITEM) loop
INSERT INTO ITEMPARENTITEM_NEW ( ITEM, PARENTITEM, YEAR) VALUES ( :new.ITEM,I, :new.YEAR);
END LOOP;
END;

感谢您的帮助

这是我的表格:

BUDGETITEMS

AMOUNT  NUMBER(2,0) Yes 
ITEMLEVEL   NUMBER  Yes 
ITEMNAME    VARCHAR2(80 BYTE)   No  
PARENTITEM  NUMBER  Yes 
YEAR    NUMBER(4,0) Yes 
ITEM    NUMBER  No  "BUDGET"."ISEQ$$_104999".nextval

AND

ITEMPARENTITEM_NEW

ITEM    NUMBER  No  
PARENTITEM  NUMBER  No  
YEAR    NUMBER(4,0) Yes 

1 个答案:

答案 0 :(得分:0)

需要有这个字段:

I.PARENTITEM

您的插入内容应为:

INSERT INTO ITEMPARENTITEM_NEW ( ITEM, PARENTITEM, YEAR) VALUES ( :new.ITEM,I.PARENTITEM, :new.YEAR);

但我认为你引入了一个突变错误。