Signalizace chyb

Z PostgreSQL
Přejít na: navigace, hledání

Příkaz SIGNAL

Tento příkaz slouží k signalizaci jedné určité události. Typ a význam události je určen SQLSTATE hodnotou, což je pětiznakový řetězec. Třída (první dva znaky) určují úroveň signálu. Rozlišujeme mezi třídami:

Třída význam
00 úspěch
01 info
02 varování
xx chyba

Kromě hodnoty SQLSTATE můžeme určit ještě další atributy signálu (výjimky): message_text, pg_message_hint a pg_message_detail. Všechny nezachycené chybové signály se šíří do vnějšího složeného příkazu. Pokud signál není zachycen, pak dojde k přerušení provádění procedury. Signály třídy 00 nelze zachytit. Signály tříd 01 a 02 lze zachytit. Pokud nejsou zachyceny, tak se nešíří do vnějšího bloku ale přeposílají rovnou ke klientovi. Nezachycené signály s SQLSTATE 02000 jsou zachyceny předdefinovaným prázdným handlerem (signal NOT FOUND).

Syntaxe

SIGNAL (SQLSTATE [VALUE] 'xxxxx'|deklarovaná podmínka) 
  [(message_text|hint|detail) '=' retezec [, ...]]

RESIGNAL [(SQLSTATE [VALUE] 'xxxxx'|deklarovaná podmínka)]
  [(message_text|hint|detail) '=' retezec [, ...]]

Příkaz RESIGNAL umožňuje odeslat zachycený originální případně modifikovaný signál. Tento příkaz lze použít pouze v těle handleru.