Вам необходимо указать столбцы «возвращаемой таблицы», это можно сделать с помощью
returns table(col_1 integer, col_2 text, ...)
В вашем случае вы возвращаете только строки одной таблицы, поэтому проще использовать
returns setof maintable
Как указано в руководстве , тело функции должно быть заключено в одинарные кавычки или с использованием долларовых кавычек .
Поскольку хранимые функции могут быть написаны на многих разных языках в Postgres, вам также необходимо указать язык - в этом случае подходит language sql
.
Итак, все это вместе, вам нужно:
CREATE FUNCTION schemaB.testFunc(p_id INT)
RETURNS setof schemaZ.mainTable
AS
$$
SELECT *
FROM schemaZ.mainTable
WHERE id = p_id
$$
language sql;
Оператор return
не требуется для language sql
функций.