带有插入循环的 Oracle 触发器
Oracle trigger whith an Insert loop
我正在尝试在 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
和
ITEMPARENTITEM_NEW
ITEM NUMBER No
PARENTITEM NUMBER No
YEAR NUMBER(4,0) Yes
它需要有字段:
I.PARENTITEM
您的插入内容应该是:
INSERT INTO ITEMPARENTITEM_NEW ( ITEM, PARENTITEM, YEAR) VALUES ( :new.ITEM,I.PARENTITEM, :new.YEAR);
但我认为你引入了突变错误。
我正在尝试在 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
和
ITEMPARENTITEM_NEW
ITEM NUMBER No
PARENTITEM NUMBER No
YEAR NUMBER(4,0) Yes
它需要有字段:
I.PARENTITEM
您的插入内容应该是:
INSERT INTO ITEMPARENTITEM_NEW ( ITEM, PARENTITEM, YEAR) VALUES ( :new.ITEM,I.PARENTITEM, :new.YEAR);
但我认为你引入了突变错误。