[英]Oracle Apex 20.1 Error: Error processing validation
我正在尝试为 oracle 顶点上的应用程序中的页面创建验证。 下面是我有的 pl/sql function 主体(返回布尔值):
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 = 'available'。 在我运行应用程序并提交表单后,它给出了以下错误:
错误:处理验证时出错。
我不知道如何解决这个问题,非常感谢您的帮助。 先感谢您!
数值或数值错误,嗯?
这可能是导致问题的原因:
and equipID = :P3_EquipID;
equipID
的数据类型是什么? 如果是NUMBER
,请尝试
and equipID = to_number(:P3_EquipID);
由于情况并非如此(正如您评论的那样),这有帮助吗?
declare
v_equipid number;
begin
SELECT count(*)
into v_equipid
from equipment
WHERE equipstatus = 'available'
and equipID = :P3_EquipID;
return v_equipid = 1;
end;
在 apex 中开发的关键是调试自己的代码。 这需要一点时间来适应。 关于如何调试您的 apex 应用程序和检测您的 pl/sql 代码的研究,web 上有大量可用的文档。
您可以通过在 SQL 研讨会中运行该 pl/sql 来调试验证。 用dbms_output.put_line('true/false')
替换您的RETURN TRUE/FALSE
语句以获得结果。 在 sql 车间运行它会给你确切的行号。 ORA-06502 通常意味着为 NUMBER 类型的变量或列分配了数据类型 VARCHAR2 的值(或其他不能转换回数字的数据类型)。
确保在将代码移回 apex 时再次删除 dbms_output 语句。
您还可以使用 apex_debug 在 apex 本身中调试您的进程,查看文档以获取功能的完整概述,如下所示:
DECLARE
v_equipid NUMBER; --integer is deprecated, should not be used
BEGIN
-- put double quotes around the %0 to make any trailing/leading characters visible.
apex_debug.info(
p_message => 'Start of validation, P3_EQUIPID = "%0"',
p0 => :P3_EQUIPID);
SELECT COUNT(*)
INTO v_equipid
FROM equipment
WHERE equipstatus = 'available' AND
equipid = :P3_EQUIPID;
apex_debug.info(
p_message => 'After SELECT INTO, v_equipid = "%0"',
p0 => v_equipid);
IF v_equipid = 1 THEN
RETURN true;
ELSE
RETURN false;
END IF;
END;
在开发人员工具栏中启用调试并调查您的页面的调试。 您放入其中的消息应该在调试日志中可用。 抛出错误后您在代码中输入的消息将不可见,因为该代码不会被执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.