ciao a tutti, sto facendo una procedura che, in una database con una tabella chiamata parlamentari con campi nome, cognome, legislatura, ecc ecc, deve stampare il numero di legislature in cui un parlamentare passato in input è stato sia deputato che senatore, in caso il parlamentare non fosse presente nella tabella deve sollevare un'eccezione. io ho fatto la mia procedura in questo modo:
premetto che se lascio solo il blocco ELSE, mi dà i risultati che richiedo ma fornisce il valore 0 se il parlamentare non è presente nel DB. per far sì che venga sollevata l'eccezione bisogna mettere anche il blocco IF.codice:create or replace PROCEDURE STAMPALEGISLATURE ( NOMEP IN VARCHAR2, COGNOMEP IN VARCHAR2 ) AS CURSOR c1 IS SELECT legislatura, count(*) FROM repositoryadm.parlamentari WHERE ((nome = NOMEP) and (cognome = COGNOMEP) and (tipo = 'd')) GROUP BY legislatura; CURSOR c2 IS SELECT legislatura, count(*) FROM repositoryadm.parlamentari WHERE ((nome = NOMEP) and (cognome = COGNOMEP) and (tipo = 's')) GROUP BY legislatura; deputato c1%rowtype; senatore c2%rowtype; counterdep integer(2) := 0; countersen integer(2) := 0; parlam_not_found EXCEPTION; BEGIN IF((NOMEP NOT IN(SELECT nome FROM repositoryadm.parlamentari)) OR (COGNOMEP NOT IN(SELECT cognome FROM repositoryadm.parlamentari))) THEN RAISE parlam_not_found; ELSE OPEN c1; LOOP FETCH c1 INTO deputato; EXIT WHEN c1%notfound; counterdep := counterdep + 1; END LOOP; CLOSE c1; OPEN c2; LOOP FETCH c2 INTO senatore; EXIT WHEN c2%notfound; countersen := countersen + 1; END LOOP; CLOSE c2; dbms_output.put_line('il parlamentare ' || NOMEP || ' ' || COGNOMEP || ' è stato deputato per ' || counterdep || ' volte e'); dbms_output.put_line('senatore per ' || countersen || ' volte.'); END IF; EXCEPTION WHEN parlam_not_found THEN dbms_output.put_line('parlamentare non esistente.'); ROLLBACK; END STAMPALEGISLATURE;
a questo punto l'errore che mi viene visualizzato è il seguente:
Errore(27,19): PLS-00405: query secondaria non ammessa in questo contesto
precisamente dove c'è la condizione dell'IF.
come posso fare a controllare se i valori nomep e cognomep sono presenti nella tabella parlamentari???