Вместо этого используйте returns table
, поэтому вам не нужно указывать имена столбцов при использовании функции. И вам не нужен PL / pgSQL для этого, функция language sql
гораздо эффективнее, если вы просто хотите обернуть запрос.
CREATE OR REPLACE FUNCTION test_select(IN eno integer)
RETURNS TABLE (ename text, sal numeric)
AS
$body$
SELECT ename,sal
FROM emp_details
WHERE EMPNO=eno;
END;
$body$
LANGUAGE sql;
Установить возвращающие функции (независимо от того, определено ли как returns setof
или с returns table
) необходимо использовать в предложении FROM, поэтому вы должны использовать его следующим образом:
select *
from test_select(101);