sql >> Databasteknik >  >> RDS >> Oracle

Oracle-fel ORA-06512

ORA-06512 är en del av felstacken. Det ger oss radnumret där undantaget inträffade, men inte orsaken till undantaget. Det indikeras vanligtvis i resten av stacken (som du fortfarande inte har postat).

I en kommentar sa du

Tja, din kod gör detta:

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

Det vill säga, det ger upphov till ett undantag när pNum inte är mellan 12 och 14. Så inkluderar resten av felstacken den här raden?

Om så är fallet behöver du bara lägga till ett undantagsblock för att hantera felet. Kanske:

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;

Dokumentationen täcker djupgående hantering av PL/SQL-undantag.



  1. Är BIGINT(8) det största heltal som MySQL kan lagra?

  2. Hur man infogar ett objekt (mer än 10 egenskaper) i mysql via mybatis baserat på anteckning utan lista alla egenskaper

  3. Aktivera SSL eller TLS i Oracle Apps R12

  4. mySQL groupconcat returnerar BLOB xxxB / Kib