Временна таблица
За да отговоря на въпроса ви в заглавието:
Човек не може "връщане на временна таблица от функцията postgres". Временните таблици са създадени
и автоматично се вижда от същия потребител в рамките на същата сесия. Те се премахват автоматично в края на сесията (или по-рано).
Функция на таблицата
Но функция за връщане на набор (известна още като "функция на таблица") може да се използва точно като таблица:
CREATE OR REPLACE FUNCTION getresourceinfo(tablename regclass, opened_path int)
RETURNS TABLE (pathid int, name varchar, pbs varchar
, parentid varchar, resid int) AS
$func$
BEGIN
RETURN QUERY EXECUTE format(
'SELECT t.pathid, t.name, t.pbs, t.parentid, t.resid
FROM ' || tablename || ' t
WHERE t.opened_path = $1'
)
USING opened_path;
END
$func$ LANGUAGE plpgsql;
Би имало смисъл само за група таблици, които споделят твърдо кодираните имена на колони с един и същ тип данни.
Извикване (точно като избиране от таблица):
SELECT * FROM getresourceinfo(1, 'my_schema.my_tbl')
Защо типът данни regclass
за параметъра на таблицата?
Име на таблица като параметър на функция на PostgreSQL
Курсор
За пълнота:Човек може да върне CURSOR
, което би било много подобна концепция на това, което питате. Подробности в ръководството тук.
Но почти не използвам курсори. Функциите на таблицата са по-практични през повечето време.