För att få enskilda kolumner istället för radtypen, anropa funktionen med:
SELECT * FROM testfunction();
Precis som du skulle välja alla kolumner från en tabell.
Tänk även på denna granskade form av din testfunktion:
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$;
I synnerhet:
DECLARE
nyckelord behövs bara en gång.
Undvik att deklarera parametrar som redan (implicit) är deklarerade som OUT
parametrar i RETURNS TABLE (...)
klausul.
Använd inte CaMeL-case-identifierare utan citat i Postgres. Det fungerar, identifierare utan citat skrivs till gemener, men det kan leda till förvirrande fel. Se:
- Är PostgreSQL-kolumnnamn skiftlägeskänsliga?
Den tillfälliga tabellen i exemplet är helt värdelös (förmodligen överförenklad). Exemplet som ges kokar ner till:
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;