ďťż
 
[PGSQL] Strumienie np. dla ostrzeżeń w procedurach Pl Pg SQL ďťż
 
[PGSQL] Strumienie np. dla ostrzeżeń w procedurach Pl Pg SQL
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[PGSQL] Strumienie np. dla ostrzeżeń w procedurach Pl Pg SQL



William - 13-03-2006 11:24
[PGSQL] Strumienie np. dla ostrzeżeń w procedurach Pl Pg SQL
 
Jak elegancko rozwiązać taki oto problem:

Jest procedura napisana w Pl Pg SQL, która operuje kursorem na pewnym
zbiorze.

Dla każdego z rekordów jest wykonywana pewna operacja, która może się albo
powieść, albo zakończyć wyjatkiem albo powieść, ale generowane jest
ostrzeżenie o np. niekompletności pewnych danych. Niepowodzenie wykonania
operacji na jednym rekordzie jest nie ma wpływu na powodzenie i sens
wykonania operacji na kolejnym rekordzie w kolejnej iteracji.

Problemem jest zaś jak gromadzić wewnątrz procedury informację o
ostrzeżeniach i wyjątkach a na zakończenie przekazać je do aplikacji ? W
innych językach użyłbym np. strumieni. Jak zgrabnie zrealizować to w Pl Pg
SQL-u ?





Robert Grabowski - 13-03-2006 11:24

  William wrote:
> Jak elegancko rozwiązać taki oto problem:
>
> Jest procedura napisana w Pl Pg SQL, która operuje kursorem na pewnym
> zbiorze.
>
> Dla każdego z rekordów jest wykonywana pewna operacja, która może się albo
> powieść, albo zakończyć wyjatkiem albo powieść, ale generowane jest
> ostrzeżenie o np. niekompletności pewnych danych. Niepowodzenie wykonania
> operacji na jednym rekordzie jest nie ma wpływu na powodzenie i sens
> wykonania operacji na kolejnym rekordzie w kolejnej iteracji.
>
> Problemem jest zaś jak gromadzić wewnątrz procedury informację o
> ostrzeżeniach i wyjątkach a na zakończenie przekazać je do aplikacji ? W
> innych językach użyłbym np. strumieni. Jak zgrabnie zrealizowaćto w Pl Pg
> SQL-u ?
>
>

Zdefniuj funkcję z parametrami out i za ich pomocą zwracaj ostrzeżenia i
wyjątki ... w aplikacji wywołają ją:

select * from funkcja();

pozdrawiam
Robert Grabowskik




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-03-2006 11:24

  William wrote:
> Jak elegancko rozwiązać taki oto problem:
>
> Jest procedura napisana w Pl Pg SQL, która operuje kursorem na pewnym
> zbiorze.
>
> Dla każdego z rekordów jest wykonywana pewna operacja, która może się albo
> powieść, albo zakończyć wyjatkiem albo powieść, ale generowane jest
> ostrzeżenie o np. niekompletności pewnych danych. Niepowodzenie wykonania
> operacji na jednym rekordzie jest nie ma wpływu na powodzenie i sens
> wykonania operacji na kolejnym rekordzie w kolejnej iteracji.
>
> Problemem jest zaś jak gromadzić wewnątrz procedury informację o
> ostrzeżeniach i wyjątkach a na zakończenie przekazać je do aplikacji ? W
> innych językach użyłbym np. strumieni. Jak zgrabnie zrealizować to w Pl Pg
> SQL-u ?

raise notice - tyle, że nie podlega transakcji co w zależności od potrzeb może
być zaletą albo wadą. :)
http://www.postgresql.org/docs/8.1/i...-messages.html

Pozostaje jeszcze kwestia strony klienckiej, ale tego tematu nie rozgryzałem.

--
P.M.




max - 13-03-2006 11:24

  William napisał(a):
> Jak elegancko rozwiązać taki oto problem:
>
> Jest procedura napisana w Pl Pg SQL, która operuje kursorem na pewnym
> zbiorze.
>
> Dla każdego z rekordów jest wykonywana pewna operacja, która może się albo
> powieść, albo zakończyć wyjatkiem albo powieść, ale generowane jest
> ostrzeżenie o np. niekompletności pewnych danych. Niepowodzenie wykonania
> operacji na jednym rekordzie jest nie ma wpływu na powodzenie i sens
> wykonania operacji na kolejnym rekordzie w kolejnej iteracji.
>
> Problemem jest zaś jak gromadzić wewnątrz procedury informację o
> ostrzeżeniach i wyjątkach a na zakończenie przekazać je do aplikacji ? W
> innych językach użyłbym np. strumieni. Jak zgrabnie zrealizowaćto w Pl Pg
> SQL-u ?
>
>
Jezlie jest to baza danych to albo RAISE NOTICE i wysylasz komunikat do
aplikacji z komunikatem
albo INSERT do TABELI i zrobić jakis mechanizm logowania ;)

Ja stosowałem RAISE NOTICE i działało np. w petli która miała kilka tys.
wysylalem stan licznika do klienta aby mial pasek postepu, u Ciebie
bedzie tak samo tylko ze informacja bedzie o bledach.





William - 13-03-2006 11:24

 
> raise notice - tyle, że nie podlega transakcji co w zależności od potrzeb
może
> być zaletą albo wadą. :)
>
http://www.postgresql.org/docs/8.1/i...-messages.html
>

Ładne, ale jak się dostać do tych notyfikacji przez aplikację kliencką ?




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 13-03-2006 11:25

  William wrote:
>>raise notice - tyle, że nie podlega transakcji co w zależności od potrzeb
>
> może
>
>>być zaletą albo wadą. :)
>>
>
> http://www.postgresql.org/docs/8.1/i...-messages.html
>
>
> Ładne, ale jak się dostać do tych notyfikacji przez aplikację kliencką ?

Pytaj dostawcy Twojej biblioteki. Zakładam, że libpq ma, bo psql potrafi to
obsłużyć, a jest zwykłym klientem. Ja nigdy nie używałem bezpośrednio libpq,
a i nie cisnęło mnie, żeby się do tego dobrać.

--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?= ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • adwokat.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com