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$;