Se scrivi più di una procedure o function, devi mettere un / dopo la fine di ciascuno.
Ti segnalo due cose:
Nel controllo fatturaFattura metti in where idfattura in modo che la query sia veloce, quellla in cun una subselect e disegnata male
Nella procedure devi metter if not controllaFattura, altrimenti funzionerà al contrario.
Ho verificato con oracle 11 e funziona bene:
codice HTML:
create or replace function controllaFattura(pNumFattura varchar2) return boolean is
risultato boolean;
begin
if(pNumFattura in (0,3,3,5))
then
risultato := true;
else
risultato := false;
end if;
return risultato;
end controllaFattura;
/
create or replace procedure raiseException(pnumFattura in varchar) is
vNome varchar(20);
vFattura number := 0;
fattNonPresente exception;
begin
if not controllaFattura(pnumFattura)
then
raise fattNonPresente;
end if;
null;
exception
when fattNonPresente then
dbms_output.put_line('La fattura2 ' || pnumFattura || ' non è stata registrata.');
end raiseException;
/
call raiseException(1);