Olá Sebastian,

Obrigado pela resposta, mas como disse antes, tenho aqueles NOTICEs dentro
do laço que me saem normalmente, como deveria. Por isso que assumo que o
erro está no UPDATE, uma vez que o que é feito antes as NOTICEs me indicam
que vai bem...

Infelizmente, não é tão simples assim, receio...

Atenciosamente,
Rodrigo Sperb


>
> ------------------------------
>
> Message: 3
> Date: Tue, 20 Oct 2009 11:52:56 -0200
> From: Sebastian SWC <sebastian...@gmail.com>
> Subject: Re: [pgbr-geral] UPDATE em a FOR LOOP de uma função não
>        funciona
> To: Comunidade PostgreSQL Brasileira
>        <pgbr-geral@listas.postgresql.org.br>
> Message-ID:
>        <7ecb774c0910200652m6bdca113tcd0b849bb5dd5...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> 2009/10/20 Rodrigo Sperb <rodrigosp...@gmail.com>
> >
> > 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
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> Fim da Digest pgbr-geral, volume 32, assunto 56
> ***********************************************
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a