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%
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.
Nebenbei: Es gibt nichts in der Funktion, das volatility VOLATILE
benötigt . Verwende STABLE
.
Es ist fast immer besser, einen satzbasierten Ansatz zu verwenden, wenn möglich . Verwenden Sie RETURN QUERY
, um von a zurückzukehren Abfrage direkt.
Für den einfachen Fall (wahrscheinlich eine Vereinfachung) können Sie auch eine einfache SQL-Funktion
Tags und Links postgresql loops cursor plpgsql