Parametry
| cdp | kontextová proměnná klienta |
| level | hladina kontextu |
| itype | typ vráceného kontextu |
| par1 | vrácená základní část kontextu, obvykle číslo objektu, v němž došlo k chybě (absolutní číslo v systémové tabulce tabulek nebo objektů) |
| par2 | vrácená dodatečná součást kontextu, je-li nějaká |
| par3 | vrácená dodatečná součást kontextu, je-li nějaká |
| par4 | vrácená dodatečná součást kontextu, je-li nějaká |
| objname | jméno objektu z par1 (pouze v SQL); jedná-li se o objekt s lokální deklarací (např. lokální deklarace procedury), objeví se zde konstantní řetězec |
Od verze
7.0, SQL varianta od verze 8.1
Popis
Pokud je tato funkce volána po chybě, vrací informace o kontextu chyby. Podrobnosti o zjišťování detailů o poslední chybě z klientského prostředí naleznete zde. Více o popisu chyb a výjimek v SQL naleznete zde.
Vstupní parametr level určuje hladinu kontextu chyby, pro hodnotu 0 funkce vrací nejbližší kontext, pro vyšší hodnoty vzdálenější kontext. Pokud je hodnota level větší nebo rovna počtu definovaných hladin kontextu, bude v parametru itype vrácena hodnota 0, což indikuje, že vyšší hladiny není třeba zkoumat.
Typicky se tato funkce volá v cyklu opakovaně pro hodnoty level od 0 nahoru dokud nevrátí itype 0.
V parametru itype se vrací druh kontextu a podle tohoto druhu se interpretují i ostatní parametry:
| itype | par1 | par2 | par3 | par4 |
| 1 - tabulka | číslo tabulky | číslo záznamu nebo -1 | číslo sloupce nebo 255 | číslo hodnoty multiatributu nebo 65535 |
| 2 - index | číslo tabulky | pořadové číslo indexu | -- | -- |
| 3 - procedura | číslo procedury | číslo řádky nebo -1 | -- | -- |
| 4 - trigger | číslo triggeru | číslo řádky nebo -1 | -- | -- |
| 5 - příkaz SQL | -- | -- | -- | -- |
| 6 - zámek | číslo tabulky nebo -1 | číslo záznamu nebo stránky | typ zámku | blokující uživatel |
| 7 - kompilace | -- | -- | -- | -- |
| 8 - záznam | číslo tabulky | číslo záznamu | -- | -- |
| 9 - indexový klíč | -- | -- | -- | -- |
| 0 - konec | -- | -- | -- | -- |
Významy parametrů, které jsou v tabulce označené --, jsou nedefinované a nemá smysl je interpretovat.
SQL varianta funkce lze volat nejen po chybě (tj. v příslušném handleru), ale i v kterémkoliv místě rutiny. Pak funkce nezjišťuje kontext chyby, ale může simulovat např. výpis zásobníku volání procedur a triggerů v okamžiku provedení - viz příklad.
Hodnota funkce
Funkce vrací FALSE v případě úspěchu, TRUE při chybě.
Příklad
PROCEDURE stack();
// vypíše stack rutin do logu
BEGIN
DECLARE level,tp,p1,p2,p3,p4 INT;
DECLARE rutine_name CHAR(63);
SET level=0;
cycle: LOOP
CALL Get_server_error_context(level, tp, p1, p2, p3, p4, rutine_name);
IF tp=0 THEN LEAVE cycle; END IF; // konec
IF tp=3 THEN // vypiš jméno procedury
CALL Log_write('Procedure '+rutine_name);
ELSEIF tp=4 then // vypiš jméno triggeru
CALL Log_write('Trigger '+rutine_name);
ELSE
CALL Log_write('Other type '+CAST(tp AS CHAR(4)));
END IF;
SET level=level+1;
END LOOP;
END
Viz