Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Fehler ORA-06512

ORA-06512 ist Teil des Fehlerstapels. Es gibt uns die Zeilennummer, in der die Ausnahme aufgetreten ist, aber nicht die Ursache der Ausnahme. Das wird normalerweise im Rest des Stapels angezeigt (den Sie noch nicht gebucht haben).

In einem Kommentar sagten Sie

Nun, Ihr Code tut dies:

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

Das heißt, es löst eine Ausnahme aus, wenn pNum nicht zwischen 12 und 14 liegt. Enthält also der Rest des Fehlerstapels diese Zeile?

Wenn dies der Fall ist, müssen Sie lediglich einen Ausnahmeblock hinzufügen, um den Fehler zu behandeln. Vielleicht:

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;

Die Dokumentation behandelt ausführlich den Umgang mit PL/SQL-Ausnahmen.