Re: User defined exceptions
От | Alex Ignatov |
---|---|
Тема | Re: User defined exceptions |
Дата | |
Msg-id | 55A91FDB.1010706@postgrespro.ru обсуждение исходный текст |
Ответ на | User defined exceptions (Alex Ignatov <a.ignatov@postgrespro.ru>) |
Список | pgsql-sql |
<br /><br /><div class="moz-cite-prefix">On 17.07.2015 10:34, Alexey Bashtanov wrote:<br /></div><blockquote cite="mid:55A8AFF3.7040305@ocslab.com"type="cite"><div class="moz-cite-prefix">On 15.07.2015 17:10, Alex Ignatov wrote:<br/></div><blockquote cite="mid:%3C55A669CA.3070302@postgrespro.ru%3E" type="cite"> Hello all!<br /> Trying to emulate"named" user defined exception with:<br /> CREATE OR REPLACE FUNCTION exception_aaa () RETURNS text AS $body$<br/> BEGIN<br /> return 31234; <br /> END;<br /> $body$<br /> LANGUAGE PLPGSQL<br /> SECURITY DEFINER<br />;<br /><br /> do $$<br /> begin<br /> raise exception using errcode=exception_aaa();<br /> exception <br /> when sqlstate exception_aaa()<br /> then<br /> raise notice 'got exception %',sqlstate;<br /> end;<br /> $$<br /> <br /> Got:<br /><br /> ERROR: syntax error at or near "exception_aaa"<br /> LINE 20: sqlstate exception_aaa()<br /><br/> I looks like "when sqlstate exception_aaa()" doesn't work. <br /><br /> How can I catch exception in this case?<br/></blockquote><br /> Hello Alex,<br /><br /> The following workaround could be used:<br /><br /> do $$<br /> begin<br/> raise exception using errcode = exception_aaa();<br /> exception<br /> when others then<br /> if sqlstate= exception_aaa() then<br /> raise notice 'got exception %',sqlstate;<br /> else<br /> raise;--reraise<br /> end if;<br /> end;<br /> $$<br /><br /> Not sure if its performance is the same as in simpleexception catch, maybe it would degrade.<br /><br /> Best Regards,<br /> Alexey Bashtanov<br /></blockquote> Yepalready used this trick =)<br /> Anyway thank you!<br /><pre class="moz-signature" cols="72">-- Alex Ignatov Postgres Professional: <a class="moz-txt-link-freetext" href="http://www.postgrespro.com">http://www.postgrespro.com</a> The Russian Postgres Company </pre><br /><br /><hr style="border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;" /><table style="border-collapse:collapse;border:none;"><tr><tdstyle="border:none;padding:0px 15px 0px 8px"><a href="https://www.avast.com/antivirus"><img alt="Avast logo" border="0" src="http://static.avast.com/emails/avast-mail-stamp.png"/> </a></td><td><p style="color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica";font-size:12pt;"> This email has been checked for viruses by Avast antivirussoftware. <br /><a href="https://www.avast.com/antivirus">www.avast.com</a></td></tr></table><br />
В списке pgsql-sql по дате отправления: