EXCEPTION


]Podporované v Oracle 

Popis

Príkaz jazyka SQL
V mnoha programovacích jazycích platí, že běhové chyby zastaví program a vrací kontrolu operačnímu systému. Pokud existuje mechanismus ošetřování vyjímek (jako je tomu např. právě v PL/SQL), je možné pokračovat ve výpočtu i po chybě a udělat tak program stabilnější a uživatelsky příznivější.

Běhové chyby lze rozdělit na:


Přehled

Vyjímky v PL/SQL můžeme rozdělit na


Některé z běžných vnitřních vyjímek mají i svá zástupná jména (např. výše zmíněným odpovídají ZERO_DIVIDE a STORAGE_ERROR), případně je lze dodatečně pojmenovat. Uživatelské vyjímky jsou pojmenovány vždy.

V případě, že v průběhu výpočtu programu nastane chyba, je vyvolána příslušná vyjímka (aicky při vnitřní vyjímce, či explicitně pomocí přikazu RAISE). K ošetření vyvolané vyjímky se používá exception handler, který zastaví právě vykonávaný blok a po svém skončení výpočet pokračuje.



Dále je možné využít funkce


Príklad

DECLARE
  pe_ratio NUMBER(3,1);
BEGIN
  SELECT price / earnings INTO pe_ratio FROM stocks
    WHERE symbol = 'XYZ';  -- might cause division-by-zero error
    INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio);
  COMMIT;
EXCEPTION  -- Exception handler
  WHEN ZERO_DIVIDE THEN  -- handles 'division by zero' error
    INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL);
    COMMIT;
  ...
  WHEN OTHERS THEN  -- handles all other errors
    ROLLBACK;
    dbms_output.put_line(SubStr('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM, 1, 255));
END;   -- exception handlers and block end here


Pozri aj

SQLERRM

]