Pessoal,
Estou com um pequeno problema (que está me tirando o sono), por favor,
ajudem-me.
Cenário: PostgreSQL 8.3.6 on x86_64-pc-linux-gnu, compiled by GCC
gcc-4.3.real (Ubuntu 4.3.2-1ubuntu12) 4.3.2.
Problema: A função abaixo deveria organizar uma tabela de agendamento
(somente o horário), porém quando chamo a function ela coloca qualquer
horário menos o atual mais o intervalo, somente depois da terceira ou quarta
tentativa é que funciona.
O cliente pode ser tanto o Delphi, quanto o psql, quanto outro qualquer que
o problema persiste.
Abaixo segue a função, observem que existe um parâmetro de entrada (não o
uso por enquanto).
Repetindo, supondo que existam horários na agenda (registros) nos horários
de 8h, 9h, 10h e agora são 12h e chamo a function para atualizar a agenda
para reordenar por exemplo o que é 8h passaria para 12:10h (devido ao
intervalo) e assim por diante, mas, o sistema coloca qualquer horário menos
o que deveria ser (agora now()).
CREATE OR REPLACE FUNCTION "public"."fnc_titulovenc_controle_agenda"
("eCodCli" integer) RETURNS boolean AS
$body$
DECLARE
-- Cursor para registros da agenda
_Registro cursor for select codcli,
data
from titulosvenc_agenda
where cast(data as date)=current_date
and horafim is null
and automatico='S'
order by data asc;
-- Variavel que recebera o resultset do cursor
Registro record;
-- Variavel para intervalo de tempo em minutos
i integer;
-- Valor de referencia para o horario de fim
vData timestamp;
BEGIN
-- Determinando o intervalo
i:=10;
-- Abrindo o cursor
open _Registro;
loop
fetch _Registro into Registro;
exit when not found;
vData :=(now() + (i||' minutes')::interval) as time;
if cast(vData as time)<='18:00:00' then
-- Atualizando a agenda
update titulosvenc_agenda
set data= vData
where codcli=registro.codcli
and cast(data as date)=current_date;
-- Atualizando a folha de rosto de cobrança
update titulosvenc set dataagenda=vData where codcli=registro.codcli;
end if;
i:=i+10;
end loop;
close _Registro;
return true;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Conto com a ajuda de vocês,
Att.
----------------------------------------------------------------------------
Rubens José Rodrigues
T.I, Analista de Suporte
Tel: (27)3399-6419 / (27)9969-8081
[email protected]
----------------------------------------------------------------------------
Broker Nestlé do Brasil S/A
Rua José Ramos de Oliveira, 91, 29111-280
Nossa Senhora da Penha, Vila Velha, ES
(27)3399-6400 / (27)9975-0140
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral