如何解决“FRM-30408:无效值”问题Oracle 表单中出现错误?
我的表单有一个主块 (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 表单时 (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.
根据文档,推荐的解决方案是:
原因:为指定数据类型输入的值无效。
操作:更正以下一项或多项:
- 与指定过程的过程参数列表中给定值对应的参数的数据类型。
- 指定过程的过程参数列表中的参数值。
这些建议都不起作用:
- 表单 (
NUMBER
) 中参数的数据类型与过程参数的数据类型 (NUMBER
) 相同。 - 参数值 (
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:
The ORDER_LINE
block uses the ORDER.ORDER_ID
item as an argument to query its records:
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:
- The datatype of the argument corresponding to the given value in the procedure argument list of the specified procedure.
- The value of the argument in the procedure argument list of the specified procedure.
Neither of these recommendations work:
- The data type of the argument in the form (
NUMBER
) is identical to the data type of the procedure's parameter (NUMBER
). - The value of the argument (
ORDER.ORDER_ID
) is also of typeNUMBER
(see first screen shot)
How do I resolve this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
啊,是的,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!
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