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

bgibtngc  于 2023-05-16  发布在  Oracle
关注(0)|答案(2)|浏览(252)

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

ORDER_LINE块使用ORDER.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 Form(Ctrl + T)时,收到如下错误:

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.与指定过程的过程参数列表中的给定值对应的参数的数据类型。
1.指定过程的过程参数列表中参数的值。
这些建议都不起作用:
1.形式为(NUMBER)的实参的数据类型与过程的形参(NUMBER)的数据类型相同。
1.参数(ORDER.ORDER_ID)的值也是NUMBER类型(参见第一个屏幕截图)
如何解决此错误?

jfgube3f

jfgube3f1#

是的,Oracle Forms中非常有用的帮助文件。“你的参数错了,改一下,你这头蠢驴。”
在这种情况下没有太大的帮助,因为错误有点微妙。
在这种情况下,您为参数ORDER.ORDER_ID指定的值将不可引用。您需要使用好的ole :预挂起它,以将其标识为绑定变量。“:ORDER.ORDER_ID”是它在参数的Value字段中的读取方式。
从本质上讲,value列必须是表单可以在PL/SQL块(表单中)中引用的实际值。
希望这有帮助!

lkaoscv7

lkaoscv72#

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

相关问题