Я не уверен, но, возможно, вы используете более старую версию pg без поддержки синтаксиса RETURNS TABLE
.Следующая проблема в вашем примере - неправильный синтаксис для языка PL / pgSQL - смотрите синтаксис в руководстве - каждая функция должна содержать блок с BEGIN ... END
.Записи могут быть возвращены через оператор RETURN QUERY
.Взгляните на этот учебник .
CREATE OR REPLACE FUNCTION foo(a int)
RETURNS TABLE(b int, c int) AS $$
BEGIN
RETURN QUERY SELECT i, i+1 FROM generate_series(1, a) g(i);
END;
$$ LANGUAGE plpgsql;
Звоните:
SELECT * FROM foo(10);