sql >> Database >  >> RDS >> Oracle

Oracle-fout ORA-06512

ORA-06512 maakt deel uit van de foutenstack. Het geeft ons het regelnummer waar de uitzondering is opgetreden, maar niet de oorzaak van de uitzondering. Dat wordt meestal aangegeven in de rest van de stapel (die je nog steeds niet hebt gepost).

In een opmerking zei je

Welnu, uw code doet dit:

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

Dat wil zeggen, er wordt een uitzondering gegenereerd wanneer pNum niet tussen 12 en 14 ligt. Dus bevat de rest van de foutenstapel deze regel?

Als dat het geval is, hoeft u alleen maar een uitzonderingsblok toe te voegen om de fout af te handelen. Misschien:

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;

De documentatie behandelt diepgaande behandeling van PL/SQL-uitzonderingen.



  1. gebruiker postgres start proces waarbij alle CPU's 100% worden gebruikt

  2. Oracle-verzameling in waar-clausule

  3. exporteer de inhoud van de mysql-databasetabel naar een PDF-bestand met behulp van php

  4. 4 gegevenstypen die worden afgeschaft in SQL Server