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

Responder a