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
|| '''');
我收到一个错误
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
|| '''');