我的表单有一个主块(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
类型(参见第一个屏幕截图)
如何解决此错误?
2条答案
按热度按时间jfgube3f1#
是的,Oracle Forms中非常有用的帮助文件。“你的参数错了,改一下,你这头蠢驴。”
在这种情况下没有太大的帮助,因为错误有点微妙。
在这种情况下,您为参数
ORDER.ORDER_ID
指定的值将不可引用。您需要使用好的ole:
预挂起它,以将其标识为绑定变量。“:ORDER.ORDER_ID
”是它在参数的Value字段中的读取方式。从本质上讲,value列必须是表单可以在PL/SQL块(表单中)中引用的实际值。
希望这有帮助!
lkaoscv72#
ORDER_ID的IN参数值写为:ORDER.ORDER_ID --->需要在ORDER.ORDER_ID前面加上冒号(:)