Запись данных в целевую таблицу, полученных из другой функции greenplum

Имеется функция, которая выполняет какие то расчеты с использованием select из таблиц БД. Она работает отлично. Например:

CREATE OR REPLACE FUNCTION udr.f_uno(p_per int4, p_uno_b int4, p_uno_e int4)
RETURNS TABLE (calmonth int4, month_dep int4, etrid varchar, uno int4, nvag int4, sto int4, stn int4, otchdor int4, iddos int4, dtoo timestamp, dtro timestamp, month_poezd int4, poezd numeric, kodst int4, min_dtop_t timestamp, max_dtop_t timestamp, type_oper text)
    LANGUAGE plpgsql
    VOLATILE
AS $$
    
    
DECLARE
--     part_val numeric;
BEGIN
 
return query    
    
SELECT dd.calmonth,
       dd.monthpo,
       dd.etrid,
       dd.uno,
       dd.nvag,
       dd.sto,
       dd.stn,
       dd.otchdor,
       dd.iddos,
       dd.dtoo,
       dd.dtro,
       zgo2n.calmonth::int4 AS month_poezd,
       zgo2n.go_poezd AS poezd,
       0 AS kodst,
       zgo2n.min_dtop_t,
       zgo2n.max_dtop_t,
       ''::text AS type_oper
   FROM udr.dd2 dd
     LEFT JOIN udr.zgo2n zgo2n 
            ON dd.calmonth::numeric = zgo2n.monthgo AND dd.uno::numeric = zgo2n.uno AND dd.etrid::text = zgo2n.etrid::text
   where dd.calmonth = p_per and
         dd.uno between p_uno_b and p_uno_e;


end;


$$
EXECUTE ON ANY;

Также есть другая функция, где происходит вызов первой функции с записью результата в целевую таблицу.

CREATE OR REPLACE FUNCTION udr.f_save_uno_gp3(p_per int4, p_uno_b int4, p_uno_e int4)
    RETURNS void
    LANGUAGE plpgsql
    VOLATILE
AS $$
    
    
    
DECLARE

begin
    insert into udr.unogp2 (calmonth, uno)
    SELECT calmonth, 
           uno  
    from udr.f_uno(p_per, p_uno_b, p_uno_e);

    return;
end;



$$
EXECUTE ON ANY;

При вызове второй функции мы получаем ошибку: function cannot execute on a QE slice because it accesses relation udr.dd2

Вызываю так: SELECT * from udr.f_save_uno_gp3(202308, 1414756420, 1414756420);

Как в функции записать результаты работы другой функции?

Использую: PostgreSQL 9.4.26 (Greenplum Database 6.23.1 build commit:2731a45ecb364317207c560730cf9e2cbf17d7e4 Open Source) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Feb 7 2023 22:54:40


Ответы (0 шт):