Hallo,
ich beschäftige mich noch nicht so lange mit PSQL. Allerdings bin ich momentan dabei, eine Funktion(PL/pgSQL) zu schreiben die für eine Datenaufbereitung in einem Datawarehouse benötigt werden. Es geht um Artikeldaten(Kalkulationsblätter) die aus einem Kopf und einem Tabellenteil bestehen (in jeweils einer Tabelle). Jeder Artikel kann aus unterartikeln bestehen (beliebig viele). Für diese Unterartikel müssen Stufen vergeben werden.
OK, soviel zur Ausgangssituation.
Was ich wissen möchte, ist eigentlich fürs Erste nur: wie kann ich das Ergebnis einer SELECT-Abfrage in ein Array speichern (also die Zeilen) um diese dann Zeile für Zeile durch zu iterieren und weiter zu verarbeiten ?
danke schonmal,
hafi
Geändert von hafi (11.09.2007 um 10:20 Uhr)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Danke. Damit wäre das erste Problem gelöst, stellt sich aber direkt das nächste.
Die Inhalte werden also in der RECORD Variable gespeichert. Jetzt habe ich das Probelm, dass ich nicht weiss, wie viele Stufen eben ein Artikel hat, also auch nicht wie viele verschiedene RECORDs ich brauche, da das Programm sich, ja quasi immer wieder selbst aufrufen müsste.
Zum Verständnis: Als Struktogramm müsste die Funktion in etwa so aussehen
![]()
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Die Frage ist nur das "wie". Wird nicht dann immer bei einem Verschachtelten Aufruf nach dem Wiederaufruf durch sich selbst die RECORD Variable wieder überschrieben?
Noch ein Gedanke dazu:
Wenn ich den Teil der sich wiederholt in eine eigene Funktion packe, kann ich ihn Problemlos immer wieder auch innerhalb von sich selbst(rekursion) aufrufen, oder?
Mein Problem ist ganz einfach, dass ich vorher noch nicht wirklich in PL/pgSQL programmiert habe![]()
Geändert von hafi (11.09.2007 um 10:48 Uhr)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Merci! das hilft![]()
Eine Frage noch dazu:
Wie kann ich das Ergebnis einer SELECT-Abfrage prüfen, ob mehr als 0 Zeilen gefunden wurden?
Konnte dazu auf die Schnell nichts finden..
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Alternativ: PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Basic Statements
Kurzzeitig war hier wohl ein Beitrag von Dir mit der Lösung eines zusätzlichen select count(*). Das ist suboptimal, weil sich die Tabelle zwischen den Aufrufen verändern könnte bzw. es ist *teuer* im Sinne von Laufzeit etc.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen