本文介紹了Oracle Apex 20.1錯(cuò)誤:處理驗(yàn)證時(shí)出錯(cuò)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在嘗試為oracle top上的應(yīng)用程序中的頁(yè)面創(chuàng)建驗(yàn)證。下面是我擁有的pl/sql函數(shù)體(返回布爾值):
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’。在我運(yùn)行應(yīng)用程序并提交表單后,它顯示以下錯(cuò)誤:
錯(cuò)誤:處理驗(yàn)證時(shí)出錯(cuò)。
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:數(shù)字或值錯(cuò)誤
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行
我不知道如何解決這個(gè)問(wèn)題,非常感謝您的幫助。提前感謝您!
推薦答案
在APEX進(jìn)行開(kāi)發(fā)的關(guān)鍵是調(diào)試您自己的代碼。這需要一點(diǎn)時(shí)間來(lái)適應(yīng)。關(guān)于如何調(diào)試您的頂尖應(yīng)用程序并檢測(cè)您的pl/sql代碼的研究,在Web上有大量的文檔可用。
您可以只通過(guò)在SQL研討會(huì)中運(yùn)行pl/sql來(lái)調(diào)試驗(yàn)證。將RETURN TRUE/FALSE
語(yǔ)句替換為dbms_output.put_line('true/false')
以獲得結(jié)果。在SQL研討會(huì)中運(yùn)行它將給出準(zhǔn)確的行號(hào)。ORA-06502通常意味著為NUMBER類型的變量或列分配數(shù)據(jù)類型VARCHAR2的值(或不能轉(zhuǎn)換回NUMBER的其他數(shù)據(jù)類型)。
請(qǐng)確保在將代碼移回頂點(diǎn)時(shí)再次刪除DBMS_OUTPUT語(yǔ)句。
您還可以使用APEX_DEBUG在APEX中調(diào)試您的進(jìn)程,請(qǐng)查看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;
在開(kāi)發(fā)人員工具欄中啟用調(diào)試,并調(diào)查頁(yè)面的調(diào)試。您在其中輸入的消息應(yīng)該在調(diào)試日志中可用。引發(fā)錯(cuò)誤后放入代碼中的消息將不可見(jiàn),因?yàn)樵摯a將不會(huì)執(zhí)行。
這篇關(guān)于Oracle Apex 20.1錯(cuò)誤:處理驗(yàn)證時(shí)出錯(cuò)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,