本文介紹了Oracle Apex 20.1錯誤:處理驗證時出錯的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試為oracle top上的應用程序中的頁面創建驗證。下面是我擁有的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=‘Available’。在我運行應用程序并提交表單后,它顯示以下錯誤:
錯誤:處理驗證時出錯。
IS_INTERNAL_ERROR:TRUE
IS_COMMON_RUNTIME_ERROR:FALSE
APEX_ERROR_CODE:APEX.VALIDATION.UNHANDLED_ERROR
ora_sqlcode:-6502
ora_sqlerrm:ORA-06502:PL/SQL:數字或值錯誤
ORA-06512:AT&Quot;APEX_200100。WWV_FLOW_VALIDATION&QOOT;,第846行
ORA-06512:AT&Quot;APEX_200100。WWV_FLOW_VALIDATION&QOOT;第846行
ERROR_BACKTRACE:ORA-06512:at";APEX_200100。WWV_FLOW_VALIDATION";,第846行
ORA-06512:AT&Quot;APEX_200100。WWV_FLOW_VALIDATION&QOOT;,第846行
ORA-06512:AT&QOOT;APEX_200100。WWV_FLOW_VALIDATION&QOOT;,第1029行
我不知道如何解決這個問題,非常感謝您的幫助。提前感謝您!
推薦答案
在APEX進行開發的關鍵是調試您自己的代碼。這需要一點時間來適應。關于如何調試您的頂尖應用程序并檢測您的pl/sql代碼的研究,在Web上有大量的文檔可用。
您可以只通過在SQL研討會中運行pl/sql來調試驗證。將RETURN TRUE/FALSE
語句替換為dbms_output.put_line('true/false')
以獲得結果。在SQL研討會中運行它將給出準確的行號。ORA-06502通常意味著為NUMBER類型的變量或列分配數據類型VARCHAR2的值(或不能轉換回NUMBER的其他數據類型)。
請確保在將代碼移回頂點時再次刪除DBMS_OUTPUT語句。
您還可以使用APEX_DEBUG在APEX中調試您的進程,請查看documentation以獲得功能的完整概述,如下所示:
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;
在開發人員工具欄中啟用調試,并調查頁面的調試。您在其中輸入的消息應該在調試日志中可用。引發錯誤后放入代碼中的消息將不可見,因為該代碼將不會執行。
這篇關于Oracle Apex 20.1錯誤:處理驗證時出錯的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,