我已经在oracle apex中对页面中的不同项目进行了页面验证,但是当我单击“提交”按钮时,所有验证都会一次运行。
意味着,假设我有3行,并且我已经对这些行进行了单独的验证,就像我只在第1行中执行了某些操作然后在提交验证后应该仅在第1行显示时,我不会触及其他两行行。
但是发生的是所有行验证错误在提交后立即显示。
请帮忙解决这个问题。
答案 0 :(得分:0)
declare
v_amt number;
v_disc number;
v_flat_amt number;
v_EXP_DATE DATE;
v_disc_type varchar2(1);
begin
select sum(c002 * c003) into v_amt
from apex_collections
where collection_name = 'items'
and c003 <> 0;
select sv.DISCOUNT_PREC, sv.FLAT_DISCOUNT_AMOUNT, cv.VOUCHER_ID, SV.EXPIRY_DATE,DISCOUNT_TYPE
INTO v_disc, v_flat_amt, :P_VOUCHER_ID,v_EXP_DATE,v_disc_type
from CUSTOMER_VOUCHERS cv, SALE_VOUCHERS sv
WHERE CV.VOUCHER_ID = sv.ID
AND CV.CUST_ID = :GLOBAL_CUSTOMER_ID
AND PROMO_CODE=:P_VOUCHER_CODE
AND NVL(AVAILED,'N')='N';
if trunc(v_EXP_DATE) < trunc(sysdate) then
:P13_DISC_PERC :=NULL;
:P13_VOUCHER_ID:=NULL;
APEX_ERROR.ADD_ERROR (
p_message => v_EXP_DATE||'This is has been expired.',
p_display_location => apex_error.c_inline_in_notification);
end if;
if v_disc_type = 'P' then
:P13_DISC_PERC := round(v_amt*v_disc/100);
else
if v_flat_amt > v_amt then
:P13_DISC_PERC := v_amt;
else
:P13_DISC_PERC := v_flat_amt;
end if;
end if;
exception when no_data_found then
:P_DISC_PERC :=NULL;
:P_VOUCHER_ID:=NULL;
APEX_ERROR.ADD_ERROR (
p_message => 'Voucher not found.',
p_display_location => apex_error.c_inline_in_notification);
end;