Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Erro Oracle ORA-06512


ORA-06512 faz parte da pilha de erros. Ele nos dá o número da linha onde ocorreu a exceção, mas não a causa da exceção. Isso geralmente é indicado no resto da pilha (que você ainda não postou).

Em um comentário você disse

Bem, seu código faz isso:
IF ((pNum < 12) OR (pNum > 14)) THEN     
    RAISE vSOME_EX;

Ou seja, ele gera uma exceção quando pNum não está entre 12 e 14. Então, o restante da pilha de erros inclui essa linha?

Nesse caso, tudo o que você precisa fazer é adicionar um bloco de exceção para lidar com o erro. Talvez:
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;

A documentação abrange o tratamento de exceções PL/SQL em profundidade.