【问题标题】:Oracle trigger whith an Insert loop带有插入循环的 Oracle 触发器
【发布时间】:2015-08-17 15:15:36
【问题描述】:

我正在尝试在 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 

【问题讨论】:

  • 你可以在你的帖子中添加表格创建脚本

标签: oracle triggers oracle12c


【解决方案1】:

需要有字段:

I.PARENTITEM

你的插入应该是:

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

但我认为您正在引入突变错误。

【讨论】:

猜你喜欢
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2021-08-25
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多