ORA-06512はエラー・スタックの一部です。例外が発生した行番号はわかりますが、例外の原因はわかりません。これは通常、スタックの残りの部分(まだ投稿していない)に示されています。
コメントであなたは言った
さて、あなたのコードはこれを行います:
IF ((pNum < 12) OR (pNum > 14)) THEN
RAISE vSOME_EX;
つまり、pNumが12から14の間にない場合、例外が発生します。それでは、エラースタックの残りの部分にこの行が含まれていますか?
もしそうなら、あなたがする必要があるのはエラーを処理するために例外ブロックを追加することです。おそらく:
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;
ドキュメントでは、PL/SQL例外の処理について詳しく説明しています。