sql >> Databáze >  >> RDS >> PostgreSQL

Jak provést výběrový dotaz v bloku DO?

DO příkaz vs. funkce PL/pgSQL

DO příkaz nevrací řádky. Můžete poslat NOTICES nebo RAISE jiné zprávy (s jazykem plpgsql) nebo můžete zapisovat do (dočasné) tabulky a později SELECT z toho, abyste to obešli.

Ale ve skutečnosti místo toho vytvořte funkci (plpgsql), kde můžete definovat návratový typ pomocí RETURNS klauzule nebo OUT / INOUT parametry a návrat z funkce různými způsoby.

Pokud nechcete, aby byla funkce uložena a viditelná pro ostatní připojení, zvažte „dočasnou“ funkci, což je nezdokumentovaná, ale dobře zavedená funkce:

  • Jak vytvořit dočasnou funkci v PostgreSQL?

generate_series() pro problém po ruce

Zdá se, že pro daný problém nepotřebujete žádné z toho. Místo toho použijte tento jednoduchý dotaz:

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<>zde hrajte

Proč?

  • Generování časových řad mezi dvěma daty v PostgreSQL


  1. 5 chyb v návrhu databáze, kterým je třeba se vyhnout

  2. Jak určit velikost tabulek v Oracle

  3. Zálohování a obnovení databáze s podporou FILESTREAM

  4. Připojení k databázi Oracle 12c z Pentaho Data Integration (Kettle) Community Edition