plpgsql Rückgabe einer Tabelle

Hallo,

hier (http://www.teialehrbuch.de/Kostenlose-Kurse/Datenbankentwicklung-mit-PostgreSQL-9/7.3.2-Beispiel-88-Mehrere-Zeilen-aus-einer-Tabelle-lesen.html) ist sehr schön zu sehen, wei man eine Tabelle als Ergebniss einer Funktion zurückerhalten kann.
Das Problem was ich habe ist allerdings, dass ich das Ergebniss für jede Zeile einzeln berechnen möchte und die Tabelle nicht schon als Ganzes vorliegen habe.

Dazu gibt es eine Abfrage welche mir StreckenID, ein Array mit den Punkten sowie eine Trennstelle liefert. Das Ergebniss der Funktion soll jetzt also sein, dass die Strecke an der Stelle getrennt wird und zwei neue Strecken zurückgegeben werden. Soweit wäre das ja noch recht einfach. Allerdings gibt es in der nächsten Zeile die gleiche StreckenID nochmals mit einer weiteren Trennstelle.
Jetzt soll die Funktion die Strecke also nicht Zeilenweise in je zwei Strecken zerlegen sondern die Ursprungsstrecke in 3 Teile zerlegen. Nämlich vom Anfang bis zur ersten Trennstelle von der ersten zur Zweiten und von der zweiten zum Ende. Dafür möchte ich also die Funktion wie folgt aufbauen:
Ich nehme mir einen Cursor und rufe die erste Zeile auf. Ergebnis ist der erste Streckenteil. Danach wird die zweite Zeile geholt und geschaut obb die ID gleich ist. Wenn das nicht der Fall ist, wird der zweite Teil der Strecke zurück gegeben und der erste Teil der neuen. Ist die ID gleich wird wieder eine Teilstrecke gebildet und die nächste Zeile geholt.

Wie das mit dem Cursor funktioniert ist hier: http://www.teialehrbuch.de/Kostenlose-Kurse/Datenbankentwicklung-mit-PostgreSQL-9/9.2.1-Beispiel-103-Eine-Tabelle-mit-einem-einfachen-Cursor-durchlesen.html
sehr gut beschrieben.
Allerdings konnte ich kein Beispiel finden, wie ich eine Tabelle Zeilenweise aufbaue. Hier wird immer nur zu einer Variable dazu addiert.
Im Prinzip könnte man auch alle Strecken in einen Array packen und diesen dann zurückgeben, aber dafür braucht man sehr viel Speicher.
Auch könnte man jede Zeile mittels Anfügeabfrage in eine neue Tabelle schreiben. Da ich aber die Dtaen noch weiterbehandeln wollte, wäre das ein unschöner Zwischenschritt.
Wenn also noch jemand ein Beispiel oder eine Idee hat wäre ich dankbar.