我的表格有一个主块(
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:无效值。 参考:ORDER.ORDER_ID 屏蔽:ORDER_LINE 过程:ORDERING_PACKAGE.QUERY_ORDER_LINES 表格:ORDER_FORM FRM-30085:无法调整输出形式。
根据文档,推荐的解决方案是:
原因:为指定数据类型输入的值无效。
行动:纠正以下一项或多项:
- 指定过程的过程参数列表中与给定值对应的参数的数据类型。
- 指定过程的过程参数列表中的参数值。
这些建议都不起作用:
NUMBER
)中参数的数据类型与过程参数(NUMBER
)的数据类型相同。ORDER.ORDER_ID
) 的值也是 NUMBER
类型(见第一个屏幕截图)如何解决这个错误?
是的,Oracle Forms 中非常有用的帮助文件。 “你的参数不对,你个驴子,改吧。”
在这种情况下没有太大帮助,因为错误有点微妙。
在这种情况下,您为参数
ORDER.ORDER_ID
指定的值将不可引用。您需要在它前面添加好 ole :
,以将其标识为绑定变量。 “:ORDER.ORDER_ID
”是它在参数的值字段中的读取方式。
本质上,值列必须是您的表单可以在 PL/SQL 块(在表单中)中引用的实际值。
希望这有帮助!
ORDER_ID的IN参数值写成:ORDER.ORDER_ID ---> 需要在ORDER.ORDER_ID前加一个冒号(:)