PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wykonać zapytanie wybierające w bloku DO?

DO polecenie a funkcja PL/pgSQL

DO polecenie nie zwraca wierszy. Możesz wysłać NOTICES lub RAISE inne komunikaty (z językiem plpgsql) lub możesz pisać do (tymczasowej) tabeli, a później SELECT z niego, aby to obejść.

Ale tak naprawdę, zamiast tego utwórz funkcję (plpgsql), w której możesz zdefiniować typ zwracany za pomocą RETURNS klauzula lub OUT / INOUT parametry i powrót z funkcji na różne sposoby.

Jeśli nie chcesz, aby funkcja była zapisana i widoczna dla innych połączeń, rozważ funkcję „tymczasową”, która jest nieudokumentowaną, ale dobrze znaną funkcją:

  • Jak utworzyć funkcję tymczasową w PostgreSQL?

generate_series() problem pod ręką

W przypadku problemu wydaje się, że nie potrzebujesz żadnego tego. Zamiast tego użyj tego prostego zapytania:

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<>graj tutaj

Dlaczego?

  • Generowanie szeregów czasowych między dwiema datami w PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Usuń atrybut z kolumny JSON

  2. W mojej bazie danych PostgreSQL brakuje miejsca na dysku

  3. Postgresql :Jak wybrać pierwsze n procent (%) wpisów z każdej grupy/kategorii?

  4. PostgreSQL 12:Implementacja uogólnionych indeksów drzewa wyszukiwania z partycjami K-Nearest Neighbor Space

  5. PostgreSQL wiersz do kolumn