Prezados,
Tenho a seguinte query:
declare
d_voucher mp_voucher.voucher_id%TYPE;
d_status VARCHAR(50);
BEGIN
select v.voucher_id
into d_voucher
from uadmin.mp_voucher v
where v.voucher_id in (&VOUCHER);
IF d_voucher is not null then
d_status := d_voucher || ',Utilizado';
ELSE
RAISE e_voucher;
end if;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
d_status := &VOUCHER || ',Não Utilizado';
END;
DBMS_OUTPUT.PUT_LINE(D_STATUS);
end;
Preciso pegar os vouchers utilizados. Se eu jogo um número que foi utilizado, ele tem q me retornar o número do voucher e a msg “Utilizado”, caso contrário, o número do voucher e a msg “Não Utilizado”.
Ocorre que qdo ele não foi utilizado, ele não existe na tabela, então o oracle me retorna o erro “NO DATA FOUND”. Por isso, usei o exception. Acontece q qdo coloco o exception no mesmo bloco, ele ignora o IF, ou seja, mesmo q eu coloque um número válido, nada acontece. Se eu retiro o trecho do exception e jogo um número válido, o if responde perfeitamente, porém, sem o exception, se entrar um número não utilizado, ele retorna o “NO DATA FOUND”.
Eu empaquei nisso, alguém pode me dar uma dica?