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

Funkcja Postgres zwraca tabelę nie zwraca danych w kolumnach

Aby uzyskać pojedyncze kolumny zamiast typu wiersza, wywołaj funkcję za pomocą:

SELECT * FROM testfunction();

Tak jak podczas wybierania wszystkich kolumn z tabeli.
Rozważ również tę sprawdzoną formę funkcji testowej:

CREATE OR REPLACE FUNCTION testfunction()
  RETURNS TABLE(a int, b int)
  LANGUAGE plpgsql AS
$func$
DECLARE
   _a int := 0;
   _b int := 0;
BEGIN
   CREATE TABLE tempTable AS SELECT _a, _b;
   RETURN QUERY SELECT * FROM tempTable;
   DROP TABLE tempTable;
END
$func$;

W szczególności:

DECLARE słowo kluczowe jest potrzebne tylko raz.

Unikaj deklarowania parametrów, które są już (niejawnie) zadeklarowane jako OUT parametry w RETURNS TABLE (...) klauzula.

Nie używaj niecytowanych identyfikatorów CaMeL-case w Postgresie. To działa, niecytowane identyfikatory są pisane małymi literami, ale może to prowadzić do mylących błędów. Zobacz:

  • Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?

Tabela tymczasowa w przykładzie jest całkowicie bezużyteczna (prawdopodobnie nadmiernie uproszczona). Podany przykład sprowadza się do:

CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
  LANGUAGE plpgsql AS
$func$
BEGIN
   a := 0;
   b := 0;
END
$func$;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja Scale() w PostgreSQL

  2. Replikacja strumieniowa PostgreSQL a replikacja logiczna

  3. Konwersja z replikacji asynchronicznej na synchroniczną w PostgreSQL

  4. Usuń zduplikowane wiersze (nie usuwaj wszystkich duplikatów)

  5. Jak podzielić transakcje tylko do odczytu i do odczytu i zapisu za pomocą JPA i Hibernate