sql >> Database >  >> RDS >> PostgreSQL

Hoe voer je een selectiequery uit in een DO-blok?

DO commando vs. PL/pgSQL-functie

De DO commando retourneert geen rijen. U kunt NOTICES . verzenden of RAISE andere berichten (met taal plpgsql) of u kunt naar een (tijdelijke) tabel schrijven en later SELECT om dit te omzeilen.

Maar echt, maak in plaats daarvan een (plpgsql) functie, waar u een retourtype kunt definiëren met de RETURNS clausule of OUT / INOUT parameters en terugkeer van de functie op verschillende manieren.

Als u niet wilt dat een functie wordt opgeslagen en zichtbaar is voor andere verbindingen, overweeg dan een "tijdelijke" functie, een ongedocumenteerde maar goed ingeburgerde functie:

  • Hoe maak je een tijdelijke functie in PostgreSQL?

generate_series() voor probleem bij de hand

Voor het probleem lijkt u geen nodig te hebben van dit. Gebruik in plaats daarvan deze eenvoudige vraag:

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<>viool hier

Waarom?

  • Tijdreeksen genereren tussen twee datums in PostgreSQL


  1. Hoe COS() werkt in MariaDB

  2. Hoe een batch invoegen in MySQL

  3. De configuratie-instellingen voor databasemail in SQL Server (T-SQL) controleren

  4. Ondersteunt SQL Server CLR Integration configuratiebestanden?