Pour obtenir des colonnes individuelles au lieu du type de ligne, appelez la fonction avec :
SELECT * FROM testfunction();
Tout comme vous sélectionneriez toutes les colonnes d'un tableau.
Considérez également cette forme révisée de votre fonction de test :
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$;
En particulier :
Le DECLARE
le mot clé n'est nécessaire qu'une seule fois.
Évitez de déclarer des paramètres qui sont déjà (implicitement) déclarés comme OUT
paramètres dans le RETURNS TABLE (...)
clause.
N'utilisez pas d'identificateurs de cas CaMeL sans guillemets dans Postgres. Cela fonctionne, les identifiants sans guillemets sont convertis en minuscules, mais cela peut entraîner des erreurs déroutantes. Voir :
- Les noms de colonne PostgreSQL sont-ils sensibles à la casse ?
La table temporaire dans l'exemple est complètement inutile (probablement trop simplifiée). L'exemple tel qu'il est donné se résume à :
CREATE OR REPLACE FUNCTION testfunction(OUT a int, OUT b int)
LANGUAGE plpgsql AS
$func$
BEGIN
a := 0;
b := 0;
END
$func$;