Oracle
 sql >> Database >  >> RDS >> Oracle

Errore Oracle ORA-06512

ORA-06512 fa parte dello stack di errori. Ci fornisce il numero di riga in cui si è verificata l'eccezione, ma non la causa dell'eccezione. Di solito è indicato nel resto dello stack (che non hai ancora pubblicato).

In un commento hai detto

Bene, il tuo codice fa questo:

IF ((pNum < 12) OR (pNum > 14)) THEN     
    RAISE vSOME_EX;

Cioè, solleva un'eccezione quando pNum non è compreso tra 12 e 14. Quindi il resto dello stack di errori include questa riga?

In tal caso, tutto ciò che devi fare è aggiungere un blocco di eccezioni per gestire l'errore. Forse:

PROCEDURE PX(pNum INT,pIdM INT,pCv VARCHAR2,pSup FLOAT)
AS
    vSOME_EX EXCEPTION;

BEGIN 
    IF ((pNum < 12) OR (pNum > 14)) THEN     
        RAISE vSOME_EX;
    ELSE  
        EXECUTE IMMEDIATE  'INSERT INTO M'||pNum||'GR (CV, SUP, IDM'||pNum||') VALUES('||pCv||', '||pSup||', '||pIdM||')';
    END IF;
exception
    when vsome_ex then
         raise_application_error(-20000
                                 , 'This is not a valid table:  M'||pNum||'GR');

END PX;

La documentazione tratta in modo approfondito la gestione delle eccezioni PL/SQL.