geison correia escreveu:
> Caros resolvi o problema parcialmente, mas o q eu estou fazendo de errado 
> agora?
> 
> WHILE resultado AND resultado.ddl_dh >= data_hora AND resultado.ddl_dh < hora 
> LOOP
> 
> Da o seguinte erro:
> 
> ERRO:  argumento do AND deve ser do tipo boolean, e não do tipo dado_lido
> CONTEXT:  comando SQL "SELECT   $1  AND  $2  >=  $3  AND  $2  < hora"
> 
> qual o melhor jeito de fazer esse laço? Tentei usar um FOR, mas n deu certo.
> 
> FOR resultado IN resultado.ddl_dh >= data_hora AND resultado.ddl_dh < 
> data_hora       
> LOOP
> 
> Alguém pode me ajudar!!
> 



Verifique se o que você deseja fazer não é:

diameter := 0;
FOR resultado IN SELECT * from dado_lido where vei_id = 
codigosArena AND ddl_dh >= data_hora;
LOOP
        diameter := 12742000;
        c := 90 - (resultado.ddl.lat[0]);
        b := 90 - (resultado.ddl.lat[1]);
        a := resultado.ddl.lat[0] - (resultado.ddl.lat[1]);
        x := acos((cos(b) * cos(c)) + (sin(b) * sin(c) * cos(a)));
        x := (PI * diameter * x) / 360;

        tempogasto := resultado.ddl.lat[1] - resultado.ddl.lat[0];
        velocidade := x/tempogasto;
        
        IF (velocidade > 150) THEN
                DELETE FROM dado_lido WHERE vei_id = codigosArena AND 
ddl_dh = data_hora;
        END IF;
END LOOP;

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

Responder a