1

我的表单有一个主块 ( ORDER) 和一个详细块 ( ORDER_LINE)。该ORDER块有一个ORDER_ID项目(它的主键)定义如下:

ORDER_ID 项的属性选项板的屏幕截图

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

ORDER_LINE 块的属性选项板的屏幕截图

ORDER_ID 参数的属性选项板的屏幕截图

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 表单 ( 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(见第一个屏幕截图)

如何解决此错误?

4

1 回答 1

2

啊,是的,Oracle Forms 中非常有用的帮助文件。“你的参数错了,改一下,你个驴。”

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

在这种情况下,您为参数指定的值ORDER.ORDER_ID将不可引用。您需要在它前面加上好 ole :,以将其标识为绑定变量。" :ORDER.ORDER_ID" 是它应该如何在参数的值字段中读取。

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

希望这可以帮助!

于 2011-01-21T14:11:53.017 回答