Signalizace chyb
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.