salve a tutti,
mi sto esercitando con il linguaggio pl/sql e, a tal proposito ho creato una procedura con un'eccezione definita dall'utente. secondo me la procedura è corretta sintatticamente, utilizzando toad come ambiente, questa viene compilata ma con errori di compilazione e, al momento della chiamata il codice va in errore. posto il codice:
codice:
truncate table ordini;
truncate table clienti;
create or replace function controllaFattura(pNumFattura inordini.fattura%type) return boolean is
risultato boolean;
begin
if(pNumFattura in (select fattura from ordini))
then
risultato := true;
else
risultato := false;
end if;
return risultato;
end;
create or replace procedure raiseException(pnumFattura in ordini.fattura%type) is
vNome varchar(20);
vFattura number := 0;
fattNonPresente exception;
begin
if controllaFattura(pnumFattura)
then
raise fattNonPresente;
end if;
select nome into vNome
from clienti c join ordini o
on c.id = o.idCliente
where fattura = pnumFattura;
exception
when fattNonPresente then
dbms_output.put_line('La fattura ' || pnumFattura || ' non è stata registrata.');
end;
exec raiseException(1);
le truncate vengono eseguite per permettere alla funzione di agirse su una tabella vuota.
in pratica l'esercizio vuole che venga sollevata l'eccezione con il comando raise, se nella tabella ordino non fosse presente una fattura con il relativo numero passato in input.
non fate caso a come sono stati impostati i dati perchè li ho creati solo per vedere se riesco a far scattare l'eccezione.
come mai quando poi la procedura viene eseguita ottengo il seguente errore?
ORA-06550: line 1, column 7:
PLS-00905: object SYS.RAISEEXCEPTION is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
help!!!