我正在尝试为oracleapex上的应用程序中的页面创建验证。下面是我拥有的pl/sql函数体(返回布尔值):
declare v_equipid integer;
begin
SELECT count(*) into v_equipid from equipment
WHERE equipstatus = 'available' and equipID = :P3_EquipID;
if v_equipid = 1 then
return true;
else
return false;
end if;
end;
用于检查提交的equipid是否有equipstatus='可用'。我运行应用程序并提交表单后,会出现以下错误:
错误:处理验证时出错。
是否为内部错误:true
是公共运行时错误:false
apex\错误\代码:apex.validation.UNHANDED\错误
ora\ U代码:-6502
ora\u sqlerrm:ora-06502:pl/sql:numeric or value error ora-06512:at“apex\u 200100.wwv\u flow\u validation”,第846行ora-06512:at“apex\u 200100.wwv\u flow\u validation”,第846行
错误\回溯:ora-06512:在“apex\ U 200100.wwv\ U flow\ U validation”行846 ora-06512:在“apex\ U 200100.wwv\ U flow\ U validation”行846 ora-06512:在“apex\ U 200100.wwv\ U flow\ U validation”行1029
我不知道如何解决这个问题,我会感谢你的帮助。提前谢谢!
2条答案
按热度按时间6uxekuva1#
数字或数值错误,嗯?
这可能是导致问题的原因:
是什么
equipID
的数据类型?如果它是一个NUMBER
,试试看既然不是这样(如你所说),这会有帮助吗?
kcrjzv8t2#
在apex中开发的关键是调试自己的代码。这需要一点时间来适应。关于如何调试apex应用程序和测试pl/sql代码的研究,web上有大量可用的文档。
您可以通过在sql workshop中运行pl/sql来调试验证。更换您的
RETURN TRUE/FALSE
对账单dbms_output.put_line('true/false')
为了得到结果。在sql workshop中运行它将为您提供准确的行号。ora-06502通常意味着一个类型为number的变量或列被赋予一个数据类型varchar2的值(或另一个不能转换回数字的数据类型)。确保在将代码移回apex时再次删除dbms\u输出语句。
您也可以通过使用apexïu debug在apex中调试您的流程,请查看文档以获得功能的完整概述,如下所示:
在“开发人员”工具栏中启用“调试”,并调查页面的调试。您在那里输入的消息应该在调试日志中可用。抛出错误后放入代码中的消息将不可见,因为不会执行该代码。