如何解决“FRM-30408:无效值”问题Oracle 表单中出现错误?

发布于 2024-10-14 00:06:45 字数 1444 浏览 7 评论 0原文

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

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

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

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

A 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< /kbd>),我收到这样的错误:

FRM-30408: Invalid value.
Reference: ORDER.ORDER_ID
Block: ORDER_LINE
Procedure: ORDERING_PACKAGE.QUERY_ORDER_LINES
Form: ORDER_FORM
FRM-30085: Unable to adjust form for output.

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

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

操作:更正以下一项或多项:

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

这些建议都不起作用:

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

如何解决此错误?

My form has a master block (ORDER) and a detail block (ORDER_LINE). The ORDER block has an ORDER_ID item (it's primary key) defined as follows:

A screen shot of the ORDER_ID item's property palette

The ORDER_LINE block uses the ORDER.ORDER_ID item as an argument to query its records:

A screen shot of the ORDER_LINE block's property palette

A screen shot of the ORDER_ID argument's property palette

The ORDERING_PACKAGE.QUERY_ORDER_LINES procedure is declared as follows:

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

When I attempt to compile my Oracle Form (Ctrl + T), I receive an error like this:

FRM-30408: Invalid value.
Reference: ORDER.ORDER_ID
Block: ORDER_LINE
Procedure: ORDERING_PACKAGE.QUERY_ORDER_LINES
Form: ORDER_FORM
FRM-30085: Unable to adjust form for output.

According to the documentation, the recommended solution is:

Cause: The value entered for the specified datatype is invalid.

Action: Correct one or more of the following:

  1. The datatype of the argument corresponding to the given value in the procedure argument list of the specified procedure.
  2. The value of the argument in the procedure argument list of the specified procedure.

Neither of these recommendations work:

  1. The data type of the argument in the form (NUMBER) is identical to the data type of the procedure's parameter (NUMBER).
  2. The value of the argument (ORDER.ORDER_ID) is also of type NUMBER (see first screen shot)

How do I resolve this error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

策马西风 2024-10-21 00:06:45

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

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

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

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

希望这有帮助!

Ah yes, the very helpful help file in Oracle Forms. "Your parameter is wrong, change it, you donkey."

Not so much help in this case, as the error is a bit more subtle.

The value you are specifying for the argument ORDER.ORDER_ID would not be referencable in this case. You need to pre-pend it with the good ole :, to identify it as a bind variable. ":ORDER.ORDER_ID" is how it should read in the Value field for the argument.

Essentially, the value column must be an actual value that your form could reference in a PL/SQL block (in the form).

Hope this helps!

夜血缘 2024-10-21 00:06:45

ORDER_ID 的 IN 参数值写为:ORDER.ORDER_ID --->需要在 ORDER.ORDER_ID 前面加上冒号 (:)

The IN Parameter value for ORDER_ID write as :ORDER.ORDER_ID ---> Need to put a colon (:) ahead of ORDER.ORDER_ID

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文