Dans votre main_function() :
RETURN QUERY SELECT * FROM temp_t;
...si la table temp_t se compose par ex. colonne1 (entier de type), colonne2 (booléen) et colonne3 (varchar(100)), vous devez également définir le type renvoyé comme :
CREATE OR REPLACE FUNCTION main_function(column1 OUT integer, column2 OUT boolean, column3 OUT varchar(100)) RETURNS SETOF record AS
(...)
Une autre méthode consiste à définir un nouveau type de données :
CREATE TYPE temp_t_type AS (
column1 integer,
column2 boolean,
column3 varchar(100)
);
Ce type peut être renvoyé par vos fonctions de la même manière que les types de données normaux :
CREATE OR REPLACE FUNCTION main_function() RETURNS SETOF temp_t_type AS
(...)
...et renvoie le résultat de la fonction de la même manière que celle mentionnée ci-dessus.