2009/10/20 Rodrigo Sperb <[email protected]> > > 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... >
Olá. confirme se entra no laço. Me parece que o problema está ai. -- Atenciosamente, Sebastian Selau Webber Colombo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
