Om individuele kolommen te krijgen in plaats van het rijtype, roept u de functie aan met:
SELECT * FROM testfunction();
Net zoals je alle kolommen uit een tabel zou selecteren.
Overweeg ook deze herziene vorm van je testfunctie:
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$;
In het bijzonder:
De DECLARE
sleutelwoord is maar één keer nodig.
Vermijd het declareren van parameters die al (impliciet) zijn gedeclareerd als OUT
parameters in de RETURNS TABLE (...)
clausule.
Gebruik geen CaMeL-case-ID's zonder aanhalingstekens in Postgres. Het werkt, ID's zonder aanhalingstekens worden omgezet in kleine letters, maar het kan tot verwarrende fouten leiden. Zie:
- Zijn PostgreSQL-kolomnamen hoofdlettergevoelig?
De tijdelijke tabel in het voorbeeld is volledig nutteloos (waarschijnlijk te vereenvoudigd). Het gegeven voorbeeld komt neer op:
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;