如何解决 Oracle Forms 中的“FRM-30408:无效值”错误?

问题描述 投票:0回答:2

我的表格有一个主块(

ORDER
)和一个细节块(
ORDER_LINE
)。
ORDER
块有一个
ORDER_ID
项目(它的主键)定义如下:

A screen shot of the ORDER_ID item's property palette

ORDER_LINE
块使用
ORDER.ORDER_ID
项目作为参数来查询它的记录:

A screen shot of the ORDER_LINE block's property palette

A screen shot of the ORDER_ID argument's property palette

ORDERING_PACKAGE.QUERY_ORDER_LINES
程序声明如下:

PROCEDURE
  query_order_lines
  (
    order_lines   IN OUT ORDER_LINE_CURSOR_TYPE,
    order_id      NUMBER,
    line_number   VARCHAR2,
    bin           VARCHAR2,
    plu           VARCHAR2,
    description   VARCHAR2
  );

当我尝试编译我的 Oracle Form (Ctrl + T) 时,我收到如下错误:

FRM-30408:无效值。
参考:ORDER.ORDER_ID
屏蔽:ORDER_LINE
过程:ORDERING_PACKAGE.QUERY_ORDER_LINES
表格:ORDER_FORM
FRM-30085:无法调整输出形式。

根据文档,推荐的解决方案是:

原因:为指定数据类型输入的值无效。

行动:纠正以下一项或多项:

  1. 指定过程的过程参数列表中与给定值对应的参数的数据类型。
  2. 指定过程的过程参数列表中的参数值。

这些建议都不起作用:

  1. 形式(
    NUMBER
    )中参数的数据类型与过程参数(
    NUMBER
    )的数据类型相同。
  2. 参数 (
    ORDER.ORDER_ID
    ) 的值也是
    NUMBER
    类型(见第一个屏幕截图)

如何解决这个错误?

oracle plsql oracleforms
2个回答
2
投票

是的,Oracle Forms 中非常有用的帮助文件。 “你的参数不对,你个驴子,改吧。”

在这种情况下没有太大帮助,因为错误有点微妙。

在这种情况下,您为参数

ORDER.ORDER_ID
指定的值将不可引用。您需要在它前面添加好 ole
:
,以将其标识为绑定变量。 “
:ORDER.ORDER_ID
”是它在参数的值字段中的读取方式。

本质上,值列必须是您的表单可以在 PL/SQL 块(在表单中)中引用的实际值。

希望这有帮助!


0
投票

ORDER_ID的IN参数值写成:ORDER.ORDER_ID ---> 需要在ORDER.ORDER_ID前加一个冒号(:)

© www.soinside.com 2019 - 2024. All rights reserved.