ORA-06512 adalah bagian dari tumpukan kesalahan. Ini memberi kita nomor baris tempat pengecualian terjadi, tetapi bukan penyebab pengecualian. Itu biasanya ditunjukkan di sisa tumpukan (yang masih belum Anda posting).
Dalam komentar Anda mengatakan
Nah, kode Anda melakukan ini:
IF ((pNum < 12) OR (pNum > 14)) THEN
RAISE vSOME_EX;
Artinya, memunculkan pengecualian ketika pNum tidak antara 12 dan 14. Jadi, apakah sisa tumpukan kesalahan menyertakan baris ini?
Jika demikian, yang perlu Anda lakukan hanyalah menambahkan blok pengecualian untuk menangani kesalahan. Mungkin:
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;
Dokumentasi mencakup penanganan pengecualian PL/SQL secara mendalam.