<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Przechwycenie nazwy pola]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=607</link>
		<description><![CDATA[Najświeższe odpowiedzi w Przechwycenie nazwy pola.]]></description>
		<lastBuildDate>Wed, 06 Jul 2011 09:06:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Przechwycenie nazwy pola]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2587#p2587</link>
			<description><![CDATA[[quote=Rogo]Witam

Proponuje zapoznanie się z tą konstrukcją :
[url]http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING[/url]

oraz z tablicą błędów:
[url]http://www.postgresql.org/docs/8.3/static/errcodes-appendix.html[/url][/quote]


Już tam byłem, zrobiłem tak, ale nic to nie daje, nie wiem jaki wyjątek przechwycić

CREATE OR REPLACE FUNCTION "schemat_zakupy"."faktualizuj_dane_klienta22" (
  "zm_pole1" varchar
)
RETURNS boolean AS
$body$
  begin

       UPDATE schemat_zakupy.tab_klienci set  pole1=zm_pole1;
                            
       return TRUE;

        EXCEPTION
        WHEN string_data_length_mismatch THEN
            RAISE NOTICE 'Za duzo';
            RETURN false;
         end;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY DEFINER
COST 100;

jeszcze pytanie, w jaki sposób uzyskać numer błędu np:

 EXCEPTION
        WHEN string_data_length_mismatch THEN
            RAISE NOTICE 'Za duzo';
          else return "numer_bledu lub nazwe bledu"]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Wed, 06 Jul 2011 09:06:15 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2587#p2587</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Przechwycenie nazwy pola]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2585#p2585</link>
			<description><![CDATA[Ale do wyciągania nazwy kolumny, która spowodowała wujątek chyba będziesz musiał napisać jakąś własną funkcję.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 05 Jul 2011 20:08:26 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2585#p2585</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Przechwycenie nazwy pola]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2584#p2584</link>
			<description><![CDATA[Witam

Proponuje zapoznanie się z tą konstrukcją :
[url]http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING[/url]

oraz z tablicą błędów:
[url]http://www.postgresql.org/docs/8.3/static/errcodes-appendix.html[/url]]]></description>
			<author><![CDATA[dummy@example.com (Rogo)]]></author>
			<pubDate>Tue, 05 Jul 2011 17:20:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2584#p2584</guid>
		</item>
		<item>
			<title><![CDATA[Przechwycenie nazwy pola]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2581#p2581</link>
			<description><![CDATA[Witam
Aktualizuję i dodaję dane do tabeli za pomocą funkcji. Wszystko jest ok, tylko mam problem kiedy podaje dłuższy tekst niż rozmiar pola. Dostaję taki błąd "ERROR:  value too long for type character varying(50)". Chciałbym w funkcji jeżeli się da przechwycić taki wyjątek, podstawić do nie go własny komunikat i nazwę pola w którym jest ten błąd.
coś takiego:

EXCEPTION
        WHEN >>za_za_duzo_danych<< THEN
            RAISE NOTICE 'Zbyt dużo danych w polu' >> tu nazwa pola które jest zbyt małe zwrócone przez system<<;
            RETURN 0;

Z góry dzięki za pomoc
AdamP.]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 02 Jul 2011 07:00:33 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2581#p2581</guid>
		</item>
	</channel>
</rss>
