PL/pgSQL

Guten Morgen,

Ich bin gerade dabei die PL/pgSQL Sprache zu studieren und habe dazu ein paar Fragen. Ist diese Sprache schon Objektorintiert und nutzt es hier einer?

Ich habe nun die Situaton das ich zwei Listen von der DB anfordern will,
die dann am Client verglichen werden und als Ergebnis endsteht eine
neue Liste die an den DB-Server zurück geschickt werden soll zum inserten.

Dann habe ich mir maldas hier durchgelesen:
PostgreSQL: Documentation: Manuals: PostgreSQL 8.0: PL/pgSQL - SQL Procedural Language

so wie ich das verstanden habe könnte ich mir da erheblich Netztraffic
sparen wenn ich PL/pgSQL nutze oder?

Marc

Nein, ja.

Ich habe nun die Situaton das ich zwei Listen von der DB anfordern will,
die dann am Client verglichen werden und als Ergebnis endsteht eine
neue Liste die an den DB-Server zurück geschickt werden soll zum inserten.

Aua. Mengenoperationen, auch Vergleiche, Differenzen, Schnittmengen und so weiter, sind einklich exakt das, was eine DB macht. Das dem Client aufzubürden ist, ähm, .

so wie ich das verstanden habe könnte ich mir da erheblich Netztraffic
sparen wenn ich PL/pgSQL nutze oder?

Marc

Wenn Du via pl/pgsql die Daten zum Client schiebst, dort vergleichst, und dann von Client wieder lesen willst, wo exakt siehst Du in diesem Szenario die Möglichkeit, Netztraffic zu sparen?

Andreas

Will ich ja nicht ;d

Ich will dann die zwei Listen auf der DB vergleichen. SQL bietet ja selber keine
Möglichkeiten wie if… then… else… while… assertions…continue, break, case,
switch, for, foreach, u.s.w

Ist doch sicher viel einfacher eine eintreffende Ergebnismenge in einer
Collection oder generischen LinkedList oder Hashmap zu verfrachten und
mittels geignenten Algorithmus auszuwerten und dann das Result an den
Client zu schicken als es über komplexe Subselects und/oder Temptables als
Variableersatz auszuwerten. SQL ist nun mal nicht Turingkonform, da muss
man immer irgendwie tricksen wenn man alles am Server machen will.

Marc

Ja. Je nachdem, wie komplex die Verarbeitung der Listen oder was auch immer ist, geht das natürlich mit plpgsql. Im ersten Post von Dir klang es allerdings a bissl nach 'ich hab 2 Listen und suche das, was in Liste 1 steht und nicht in Liste 2" oder so, daß macht mann dann doch eher in reinem SQL.


SQL ist nun mal nicht Turingkonform, da muss man immer irgendwie
tricksen wenn man alles am Server machen will.

Marc

pl/pgsql ist eine hinreichend mächtige Sprache, um viele nützliche Dinge zu machen, ja.


Andreas

gibts eigentlich noch andere sprachen für pg die vielleicht etwas objektorientierter sind und schmankerl wie STL, Generics, Vectoren
und spezielle Methoden für Mengenoperationen anbieten?

Klar, jede Menge. pllolcode zum Beispiel g.

Aber es gibt u.a. pl/perl und pl/R.

Mehr: Choosing the right Database Procedural Language PL - Postgres OnLine Journal

Andreas

Hmm, mit PL/pgSQL kann ich mich schon anfreunden.
Gibt es in diesem Zusammenhang auch etwas ähnliches wie
die ORACLE PL/SQL Anonymous block - Oracle FAQ
?