Cursorbasierte Datensätze in PostgreSQL

7

Ich versuche, Cursor für eine Abfrage zu verwenden, die mehrere Tabellen verbindet. Ich habe gesehen, dass es für Orakel einen Cursor-basierten Datensatz gibt. Wenn ich das gleiche für Postgres versuche, wirft es einen Fehler auf. Wie kann ich das gleiche in Postgres tun?

%Vor%

Fehler, den ich bekomme ist:

%Vor%
    
Zeus 12.03.2014, 00:33
quelle

2 Antworten

3

Verwenden Sie einfach den RECORD -Typ:

%Vor%     
MatheusOl 12.03.2014, 00:45
quelle
23

1. Impliziter Cursor

Es ist fast immer besser, den impliziten Cursor eines zu verwenden FOR loop , als auf einen etwas langsameren und unhandlicheren expliziten Cursor zurückzugreifen. Ich habe tausende von plpgsql-Funktionen geschrieben und nur eine Hand voller mal expliziter Cursor Sinn gemacht.

%Vor%

Nebenbei: Es gibt nichts in der Funktion, das volatility VOLATILE benötigt . Verwende STABLE .

2. Set-basierter Ansatz

Es ist fast immer besser, einen satzbasierten Ansatz zu verwenden, wenn möglich . Verwenden Sie RETURN QUERY , um von a zurückzukehren Abfrage direkt.

%Vor%

3. SQL-Funktion

Für den einfachen Fall (wahrscheinlich eine Vereinfachung) können Sie auch eine einfache SQL-Funktion oder auch nur die Abfrage:

%Vor%     
Erwin Brandstetter 12.03.2014 02:02
quelle

Tags und Links