Olá a todos,
Estou tendo um problema para realizar um UPDATE numa tabela dentro de um FOR
LOOP de uma função. Por algum motivo, o UPDATE não é realizado.
Aqui está a parte em que dá problema:
FOR ltt IN SELECT * FROM arrival_time_function AS at INNER JOIN edge AS e ON
e.t_node=at.vid WHERE e.f_node=n_i
LOOP
geo := (SELECT dr_arrivaltime_function(geo_ti,n.geom, ltt.geom,
tau_i,tau_prime)
FROM (SELECT ltt.t_node AS vid, ef.geom
FROM _edge_delay_function_ AS ef
WHERE ltt.id=ef.eid AND ltt.val_dir=ef.val_dir) AS n);
RAISE NOTICE 'geo =
%', st_AsText(geo);
ivid := ltt.vid;
RAISE NOTICE 'ivid =
%', ivid;
UPDATE arrival_time_function SET geom=geo WHERE vid=ivid;
DELETE FROM _queue_arrival_time_ WHERE vid=ltt.t_node AND tau >= tau_i
AND tau <= tau_prime;
END LOOP;
Ah! ltt é declarado como do tipo record. E as NOTICEs me indicam que o que
não acontece é a atualização na tabela, que o resto vai bem. Por favor,
entendam que esse código já foi retrabalhado para tentar resolver o
problema. Então, por exemplo, a variável "ivid" foi criada para ver se assim
funcionava, ao invés de simplesmente colocar "vid=ltt.vid" O DELETE que
segue o UPDATE parece não funcionar também...
Espero que alguém tenha uma idéia de qual é o problema. Desde já agradeço
eventuais sugestões. Isso faz parte da implementação do meu mestrado e perdi
quase o dia todo por esso erro, ao meu ver, bobo...
Atenciosamente
Rodrigo Sperb
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral