Eu vou postar minha função aqui pra ficar mais claro:

CREATE OR REPLACE FUNCTION filtro_de_velocidade()
RETURNS void AS $$

DECLARE
        diameter INTEGER;
        codigosArena RECORD;
        tempogasto RECORD;
        data_hora time;
        velocidade RECORD;
        c INTEGER;
        b INTEGER;
        a INTEGER;
        x INTEGER;
        resultado RECORD;

BEGIN
        SELECT current_time;
                        /*pega a hora/data corrente do servidor*/

        data_hora := current_date;
                        /* insere em hora a hora/data corrente do servidor */

        SELECT to_String(data_hora, 'yyyy-mm-dd, HH24:MI.SS');
                        /* converte hora para o formato especificado*/

        SELECT INTO codigosArena cd_veiculo_arena from t_veiculo;
                                        /*
                                        codigosArena recebe cd_veiculo_arena da 
tabela t_veiculo
                                        codigosArena := cd_veiculo_arena
                                        */
        SELECT INTO resultado * from dado_lido where vei_id = codigosArena;
                                        /*
                                        resultado recebe todos os dados da 
tabela dado_lido.
                                        onde vei_id(PK) é igual a 
codigoArena(cd_veiculo(FK))
                                        */
        diameter := 0;

        WHILE resultado AND resultado.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;

Como e onde eu devo usar o PERFORM?

Obrigado a todos!
------------------------------------------------------------------------

Em 06/11/07, Dickson Guedes<[EMAIL PROTECTED]> escreveu:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> geison correia escreveu:
> > (...) Cara olha só a minha função retorna um void
> >
> > CREATE OR REPLACE FUNCTION filtro_de_velocidade() RETURNS void AS
> > $$ . . . RETURN; END; $$ LANGUAGE plpgsql;
> >
> > Como eu devo usar "SELECT filtro_de_velocidade()"?
>
> Geison,
>
> Se sua função retorna void para onde vai o resultado do SELECT? Como o
> próprio aviso da mensagem de erro recomenda não seria o caso de você
> utilizar "PERFORM"?
>
> [ ]s
> Guedes
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (GNU/Linux)
> Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
>
> iD8DBQFHMKe1fNj5A+QkLMoRAuMTAKCagV9/JPIFvjyavZGxb5ex8WK5BACg506I
> ySJDy7k14WsmcDGq6p4YHWg=
> =zsrQ
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a