DO
Befehl vs. PL/pgSQL-Funktion
Das DO
Befehl gibt keine Zeilen zurück. Sie können NOTICES
senden oder RAISE
andere Nachrichten (mit Sprache plpgsql) oder Sie können in eine (temporäre) Tabelle schreiben und später SELECT
davon ab, um dies zu umgehen.
Aber wirklich, erstellen Sie stattdessen eine (plpgsql)-Funktion, in der Sie einen Rückgabetyp mit RETURNS
definieren können -Klausel oder OUT
/ INOUT
Parameter und Rückkehr von der Funktion auf verschiedene Weise.
Wenn Sie nicht möchten, dass eine Funktion gespeichert und für andere Verbindungen sichtbar ist, ziehen Sie eine "temporäre" Funktion in Betracht, die eine undokumentierte, aber gut etablierte Funktion ist:
- Wie erstelle ich eine temporäre Funktion in PostgreSQL?
generate_series()
für das vorliegende Problem
Für das vorliegende Problem scheinen Sie keine zu benötigen von diesem. Verwenden Sie stattdessen diese einfache Abfrage:
SELECT row_number() OVER () AS running_month
, extract('year' FROM m) AS year
, extract('month' FROM m) AS month
FROM generate_series(timestamp '2012-04-01'
, timestamp '2016-01-01'
, interval '1 month') m;
db<>hier fummeln
Warum?
- Generieren von Zeitreihen zwischen zwei Daten in PostgreSQL