sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan udfører man en select-forespørgsel i en DO-blok?

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


  1. Hvad er meningen med Initial Catalog i en SQL Server-forbindelsesstreng?

  2. At overleve en Oracle Audit

  3. SQL-serverlogforsendelse og installation og konfiguration -2

  4. Sådan ændres sekvensnummeret for en database-mailkonto i en profil i SQL Server (T-SQL)