Oracle Forms Execute_query 给出 FRM-40737 错误

Oracle Forms Execute_query giving FRM-40737 error

我收到一个错误

FRM - 40737 - illegal restricted procedure GO_BLOCK in WHEN-VALIDATE-RECORD trigger.

我的密码是

IF event_name = 'WHEN-VALIDATE-RECORD'
      THEN
         IF (form_name = 'OEXOEORD' AND block_name = 'ORDER')
         THEN
            -- call procedure to validate and cascade the ship method code.
            cascade_ship_method;
         execute_query;
         END IF;

我在这里做错了什么?

这是因为 Oracle Forms 有两种类型的 built-in 过程 - 受限和不受限。有些触发器启用受限过程,有些则不启用(请参阅 Oracle Forms 帮助,每个触发器都有它启用哪些过程的信息)。

触发器 WHEN-VALIDATE-ITEM 例如,当用户将光标从一条记录移动到另一条记录时触发(这称为导航)。在这种情况下,它会留下一条记录并输入另一条记录。在触发链

之后被触发
  • WHEN-VALIDATE-ITEM
  • WHEN-VALIDATE-RECORD
  • POST-ITEM
  • POST-RECORD
  • PRE-RECORD
  • PRE-ITEM

如果此触发器中的任何一个失败,导航将被取消并且光标 returns 到原始项目。如果您调用任何启动新导航(如 GO_BLOCK)的过程,Oracle Forms 将无法管理第一个导航。

这就是某些程序受到限制的原因。

可能与cascade_ship_method的内容有关。当我收到此错误时,我在 SET_BLOCK_PROPERTY 语句中漏掉了一个撇号。当我修复时,它起作用了。这是我的代码块中的正确结构:

SET_BLOCK_PROPERTY (
                  'TABLE_A',
                  default_where,
                     'column_a= '
                  || ''''
                  || variable
                  || '''');