EXECUTE format COPY. Не работают переменные

Создал в БД postgres функцию, которая при вызове должна выгружать данные в файл на сервере. Если подставляются переменные, то файл создается, НО внутри только одна строка с HEADER'м, а данных нет... при этом никаких ошибок не выдается. Вот сама функция:

CREATE OR REPLACE FUNCTION public.gidro5
(
  IN  tms1  timestamp without time zone = '2019-01-01 00:00:00'::timestamp without time zone,
  IN  tms2  timestamp without time zone = '2020-01-01 00:00:00'::timestamp without time zone
)
RETURNS void AS
$$

begin
    
EXECUTE format('COPY(
        SELECT 
        sensor.id as "NST",
        measurement.timestamp_ as "time_stamp",
        measurement.number as "h"      
FROM
  public.measurement
  INNER JOIN public.sensor ON (public.measurement.sensor = public.sensor.id)
WHERE
  measurement.timestamp_ BETWEEN %L AND %L
ORDER BY
  measurement.timestamp_) TO ''/tmp/1.csv'' with (FORMAT csv, HEADER true, delimiter '','');', tms1, tms2);
  
end
$$
LANGUAGE 'plpgsql';

ALTER FUNCTION public.gidro5(timestamp without time zone, timestamp without time zone)
  OWNER TO postgres;

Однако, если заместо tms1 и tms2 подставить даты напрямую, вот так:

measurement.timestamp_) TO ''/tmp/1.csv'' with (FORMAT csv, HEADER true, delimiter '','');', '2021-01-01', '2022-01-01');

то все прекрасно работает. Подскажите пожалуйста что тут не так с переменными?


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