----- Original Message ----- 
  From: Rodrigo Sperb 
  To: [email protected] 
  Sent: Tuesday, October 20, 2009 11:03 AM
  Subject: [pgbr-geral] UPDATE em a FOR LOOP de uma função não funciona


  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

  
------------------------------------------------------------------------------------------------------------------
 
  Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados. 



------------------------------------------------------------------------------


  _______________________________________________
  pgbr-geral mailing list
  [email protected]
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

  Boa Tarde,

  Já me aconteceu uma vez a mesma situação, acabei descobrindo que dentro da 
função tinha criado uma variável com o mesmo nome do campo da tabela que estava 
executando o update.
  Foram  4 horas até achar...

  Sds,

  Irineu Raymundo






------------------------------------------------------------------------------------------------------------
Esta mensagem foi verificada pelo sistema de Segurança da SJB Solados Ltda. 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a