CREATE OR REPLACE FUNCTION public.F() RETURNS void AS $$ DECLARE sql_str text; begin --Создание temp sql_str := 'DROP TABLE IF EXISTS Temp; CREATE temporary TABLE Temp( Field1 uuid, Field2 uuid, Field3 uuid, Field4 uuid, Field5 text, Field6 text, Field7 text, Field8 text, Field9 int, Field10 int, Field11 int, Fiels12 int);'; execute sql_str; --Заполнение temp sql_str := 'insert into Temp select distinct on (-- перечень полей -- from t left join c on t.id =c.uid --несколько объединений-- where --перечень условий--; execute sql_str; --Заполнение таблицы t на основе temp sql_str := 'INSERT INTO public.t (--перечень полей--) select --перечень полей-- from Temp; execute sql_str; --Обновление таблицы f на основе temp sql_str := 'UPDATE public.f SET --перечень полей-- from Temp where --перечень условий--; execute sql_str; return; END; $$ LANGUAGE plpgsql;