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下的表单中定义的