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:
le truncate vengono eseguite per permettere alla funzione di agirse su una tabella vuota.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);
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!!!

Rispondi quotando
