>Есть проблема: надо создать функцию для работы с таблицами, у которой аргумент
>- имя таблицы, с которой она должна работать. Но PostgreSQL не
>раскрывает подстановки типа SELECT что-нибудь FROM $1 (или имя переменной). Не
>подскажет ли кто-нибудь решение? SQL-ную функцию такую не написать, но на PL/pgSQL можно.
Если достаточно чтобы функция возвращала одну запись, то можно использовать EXECUTE INTO внутри PL/pgSQL (см. http://www.postgresql.org/docs/8.1/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN )
А если нужна Set Returning Function, то можно сделать с помощью курсоров (похоже на пример вот здесь http://www.postgresql.org/docs/8.1/static/plpgsql-cursors.html#PLPGSQL-CURSOR-USING ). В функции надо сначала получить курсор на Ваш динамический запрос, а потом пройтись циклом по результатам из курсора.