gpt4 book ai didi

sql - WHEN_VALIDATE 触发器中的 GO_BLOCK

转载 作者:行者123 更新时间:2023-12-04 13:40:59 26 4
gpt4 key购买 nike

我正在使用 oracle 表单。每当修改特定字段的值时,我都必须运行一个过程。我必须执行的过程包含一个 go_block 指令,不能在 when_validate_item 触发器中使用。有没有办法绕过这个?

编辑

我必须使用when_validate_item,因为必须在修改字段时运行我必须运行的过程,但必须在执行验证之前运行。

最佳答案

通常在 GO_BLOCK 上使用 GO_ITEMWHEN-VALIDATE-ITEM 是有限制的。但是,有几种方法可以克服这个问题。一种方法是使用 WHEN-TIMER-EXPIRED 触发器。这是如何-
WHEN-TIMER-EXPIRED

Begin    
if GET_APPLICATION_PROPERTY(TIMER_NAME) = 'NEW_TIMER' then
CALL_PROG_UNIT(); --This is your Procedure that calls the GO_BLOCK
/*Do rest of validation here*/
end if;
END;
WHEN-VALIDATE-ITEM
DECLARE    
timer_id TIMER;
Begin
timer_id := CREATE_TIMER('NEW_TIMER',1,NO_REPEAT); --set a short timer so that the WHEN-TIMER-EXPIRED trigger is fired immediately
End;

会发生什么 - 一旦 CREATE_TIMER 函数被调用,这将创建和过期计时器,然后表单级触发器 WHEN-TIMER-EXPIRED 将检查过期的计时器名称并调用具有 GO_BLOCK 的程序单元。希望这可以帮助。

更新

Jeffery Kemp 先生想看看这个解决方案是否有效的证据。所以这里是——

带有两个块 BLOCK1BLOCK2 的 Oracle 表单,上面有文本项

W-V-I 触发器

W-T-E 形式触发器。这首先使用 P_CALL_PROC 函数调用调用 PROGRAM UNIT GO_BLOCK ,然后对字段 Number 2 进行一些验证。

这是 P_CALL_PROC
这是结果——



Here 是一个 Youtube 链接,用于查看正在运行的表单。

关于sql - WHEN_VALIDATE 触发器中的 GO_BLOCK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com