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.