Oracle表单用于检查多个详细信息块的后回滚

Oracle表单用于检查多个详细信息块的后回滚,oracle,plsql,oracleforms,Oracle,Plsql,Oracleforms,不久;我有多个像树一样相互关联的细节块,所以我需要检查每个块都有父块和子块。(很复杂) 所以我决定了最好的控制方法,若数据不正确,发布并回滚 这是我的KEY-COMMIT触发器中的代码,它在COMMIT之前运行: if :kampanyaTanim.katmanKod = 1 then post; checkSection(:kampanyaTanim.seq); rollback; end if; 这是检查部分程序: PROCEDURE checkSection(p_

不久;我有多个像树一样相互关联的细节块,所以我需要检查每个块都有父块和子块。(很复杂)

所以我决定了最好的控制方法,若数据不正确,发布并回滚

这是我的
KEY-COMMIT
触发器中的代码,它在
COMMIT
之前运行:

if :kampanyaTanim.katmanKod = 1 then
    post;
    checkSection(:kampanyaTanim.seq);
    rollback;
end if;
这是
检查部分
程序:

PROCEDURE checkSection(p_kampSeq number) IS
v_skor number;
v_yas number;
BEGIN
select count(s.skorSeq)
  ,count(y.yasSeq)
into v_skor
  ,v_yas
  bla.bla my control query


if v_skor <> v_yas then
    rollback;
    messagebox('test');
    raiseUserError('Segment hatasý! Bütün skor aralýklarý için yaþ aralýðý tanýmlanmalýdýr.');
end if;
exception when others then
    messageBox(sqlerrm);
    ShowMessage('',True,DEF_MESSAGE_HANDLER);
END;
程序检查部分(p_kampSeq编号)为
v_skor数;
v_yas编号;
开始
选择计数(s.skorSeq)
,计数(y.y.Seq)
进入v_skor
,v_yas
bla.bla我的控制查询
如果v_sk或v_yas那么
回降;
messagebox(“测试”);
raiseUserError(亚阿拉尔地区的hatasý!Bütün skor aralýklarýiç段);
如果结束;
当其他人
messageBox(sqlerrm);
ShowMessage(“”,True,DEF_MESSAGE_HANDLER);
结束;
因此,当我测试此过程时,test messagebox工作正常,但随后会弹出100501非ORACLE异常(两次),然后表单关闭。我不知道出了什么问题,我认为是
回滚
导致了错误,但不知道是如何造成的。
所以我需要一些帮助。提前谢谢。

也许
messageBox(dbms\u实用程序.格式化\u调用\u堆栈)
可能会有帮助。@BarbarosÖzhan Error说不能远程调用内置例程我必须更改其参数吗?似乎你从远程数据库调用了一个过程,不是吗?试着用常规的SQL SELECT语句来调用。@BarbarosÖzhan不,我没有。这段代码中只有一个select查询,我使用的所有其他过程都是在program units下的表单中定义的