【问题标题】:Form failed when called调用时表单失败
【发布时间】:2020-06-22 12:49:11
【问题描述】:

在 oracle 表单生成器中,我的表单无法访问名为 WNFI 的触发器,我在 when-new-form-instance 这样的时候调用它

execute_trigger('WNFI') ;

它根本不进入它 有什么问题?

【问题讨论】:

  • execute_trigger() 已经被弃用了几十年,几乎是因为 Forms 3 引入了适当的用户定义的子程序。那么,您是否有特别的原因试图让这项工作发挥作用,或者仅仅是出于学术上的好奇心?
  • 它是在我编辑之前的形式中构建的
  • 好吧,如果它现在不起作用,那么您就有充分的理由重新考虑它。
  • @APC 我想确保我的修改不是问题,我正在尝试向该触发器发送消息,但我发现该表单根本看不到它

标签: oracle oracle11g oracleforms


【解决方案1】:

您使用哪个表单版本?

我刚刚在 Forms 10g 上尝试过,它工作正常 - 触发器被调用并完成它的工作(在我的测试中,显示一条消息)。

无论如何,以防你不明白 APC 所说的:将代码从 WNFI 触发器移动到一个过程(不是存储过程,在数据库中;在 Program units 节点下创建它在对象导航器中)。例如:

-- This is P_WNFI procedure; this code was previously in WNFI trigger
message('wnfi');
message('wnfi');

修改WHEN-NEW-FORM-INSTANCE触发器:

-- instead of
--   execute_trigger('WNFI');
-- use
p_wnfi;

如果您打开表单在线帮助系统并搜索execute_trigger,您会看到一条注释:

EXECUTE_TRIGGER 不是执行用户命名触发器的首选方法。编写用户命名的子程序是首选方法。

如果我是你,我会照你说的做。 execute_trigger 可能会在这里用于向后兼容一段时间,但不会永远。谁知道;也许是甲骨文公司。可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2014-11-05
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多