Когда я выполняю приведенную ниже функцию, я получаю сообщение об ошибке:
date/time field value out of range: "0"
Не могли бы вы помочь мне выяснить, что не так с этим кодом.
Это выдано FETCH c_dt_coursor INTO v_idetail;
create schema if not exists stbschema;
create type stbschema.itdtls as (
ID NUMERIC,
TD NUMERIC,
SDT TIMESTAMP(0),
RUP NUMERIC,
EDT TIMESTAMP(0)
);
do $$
begin
CREATE DOMAIN stbschema.itdtls_v as stbschema.itdtls[];
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
CREATE OR REPLACE FUNCTION stbschema.f1(p_ant numeric, p_dt timestamp without time zone, p_id numeric, p_dtf timestamp without time zone, p_tf character varying, OUT p_amount numeric, OUT p_sts boolean)
RETURNS record
LANGUAGE plpgsql
AS $function$
DECLARE
v_sts BOOLEAN := FALSE;
v_idetail stbschema.itdtls_v;
c_dt_coursor cursor is
select array(select row(id,
mny,
sdt,
rat,
coalesce(edt, p_dt))
from idtls
where id = p_id
and sdt <= p_dt
and coalesce(edt, p_dt) > p_dtf
order by sdt,mny);
begin
p_amount := 0;
OPEN c_dt_coursor;
FETCH c_dt_coursor INTO v_idetail;
CLOSE c_dt_coursor;
v_sts := TRUE;
p_sts := v_sts;
return;
end $function$;
Пример строки, возвращаемой курсором:
{"(1,10,\"2001-01-01 00:00:00\",500,\"2009-01-01 12:00:00\")"}