Oracle
 sql >> Base de données >  >> RDS >> Oracle

Erreur Oracle ORA-06512

ORA-06512 fait partie de la pile d'erreurs. Il nous donne le numéro de ligne où l'exception s'est produite, mais pas la cause de l'exception. Cela est généralement indiqué dans le reste de la pile (que vous n'avez toujours pas posté).

Dans un commentaire, vous avez dit

Eh bien, votre code fait ceci :

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

C'est-à-dire qu'il lève une exception lorsque pNum n'est pas compris entre 12 et 14. Le reste de la pile d'erreurs inclut-il donc cette ligne ?

Si tel est le cas, il vous suffit d'ajouter un bloc d'exception pour gérer l'erreur. Peut-être :

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 documentation couvre en profondeur la gestion des exceptions PL/SQL.