For at få individuelle kolonner i stedet for rækketypen skal du kalde funktionen med:
SELECT * FROM testfunction();
Ligesom du ville vælge alle kolonner fra en tabel.
Overvej også denne gennemgåede form for 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$;
Især:
DECLARE
nøgleord er kun nødvendigt én gang.
Undgå at erklære parametre, der allerede (implicit) er erklæret som OUT
parametre i RETURNS TABLE (...)
klausul.
Brug ikke uciterede CaMeL-case-id'er i Postgres. Det virker, identifikatorer uden anførselstegn castes til små bogstaver, men det kan føre til forvirrende fejl. Se:
- Er PostgreSQL-kolonnenavne skelne mellem store og små bogstaver?
Den midlertidige tabel i eksemplet er fuldstændig ubrugelig (sandsynligvis forsimplet). Eksemplet som givet bunder i:
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;