DO
kommando vs. PL/pgSQL-funktion
DO
kommandoen returnerer ikke rækker. Du kan sende NOTICES
eller RAISE
andre beskeder (med sprog plpgsql), eller du kan skrive til en (midlertidig) tabel og senere SELECT
fra det for at komme uden om dette.
Men egentlig, opret en (plpgsql) funktion i stedet, hvor du kan definere en returtype med RETURNS
klausul eller OUT
/ INOUT
parametre og returnere fra funktionen på forskellige måder.
Hvis du ikke vil have en funktion gemt og synlig for andre forbindelser, så overvej en "midlertidig" funktion, som er en udokumenteret, men veletableret funktion:
- Hvordan opretter man en midlertidig funktion i PostgreSQL?
generate_series()
for problemet ved hånden
For det aktuelle problem ser du ikke ud til at have brug for nogle af dette. Brug denne simple forespørgsel i stedet:
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<>spil her
Hvorfor?
- Generering af tidsserier mellem to datoer i PostgreSQL