ORA-06512 je součástí zásobníku chyb. Udává nám číslo řádku, kde k výjimce došlo, ale ne příčinu výjimky. To je obvykle uvedeno ve zbytku balíčku (který jste stále nezaúčtovali).
V komentáři, který jste řekl
Váš kód dělá toto:
IF ((pNum < 12) OR (pNum > 14)) THEN
RAISE vSOME_EX;
To znamená, že vyvolá výjimku, když pNum není mezi 12 a 14. Obsahuje tedy zbytek chybového zásobníku tento řádek?
Pokud ano, vše, co musíte udělat, je přidat blok výjimky pro zpracování chyby. Možná:
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;
Dokumentace se podrobně zabývá zpracováním výjimek PL/SQL.