http://postgres.cz/index.php?title=Signalizace_chyb&feed=atom&action=historySignalizace chyb - Historie editací2024-03-28T19:07:18ZHistorie editací této stránkyMediaWiki 1.36.0http://postgres.cz/index.php?title=Signalizace_chyb&diff=233&oldid=prev85.160.78.222: /* Příkaz SIGNAL */2007-02-18T08:36:56Z<p><span dir="auto"><span class="autocomment">Příkaz SIGNAL</span></span></p>
<p><b>Nová stránka</b></p><div>===Příkaz SIGNAL===<br />
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:<br />
{| {{prettytable}}<br />
|-<br />
| Třída || význam <br />
|-<br />
| 00 || úspěch<br />
|-<br />
| 01 || info<br />
|-<br />
| 02 || varování<br />
|-<br />
| xx || chyba<br />
|}<br />
<br />
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).<br />
<br />
''Syntaxe''<br />
<pre><br />
SIGNAL (SQLSTATE [VALUE] 'xxxxx'|deklarovaná podmínka) <br />
[(message_text|hint|detail) '=' retezec [, ...]]<br />
<br />
RESIGNAL [(SQLSTATE [VALUE] 'xxxxx'|deklarovaná podmínka)]<br />
[(message_text|hint|detail) '=' retezec [, ...]]<br />
</pre><br />
<br />
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.</div>85.160.78.222