Caro André,

2009/3/13 André Volpato <[email protected]>

> Pessoal,
>
> Estou me matando aqui pra conseguir a quantidade de registros retornada em
> uma query, usando PL/PGSQL.
>
> Além da quantidade de registros, preciso interagir com os resultados da
> query.
>
>
> O problema é que eu preciso desse valor *antes* de entrar no loop.
>
>
> (...)
> for result in EXECUTE query
> loop
>        GET DIAGNOSTICS qtd = ROW_COUNT;
>        -- retorna 0 sempre ;(
> end loop;
>
>

Poderias criar uma tabela temporaria com a query e obter o numero de
registros pelo catalogo:

(...)
create temp table mytemp as [query];
analyze mytemp;
select reltuples into qtd from pg_class where relname = 'mytemp';
raise info 'Registros = %', qtd;

for result in select * from mytemp
loop
       -- nesse ponto terás o valor de qtd ;)
end loop;

(...)


Não sei se existe solução melhor, mas foi a que me pareceu melhor nesse
momento.


>
> Ou então, preciso saber se tem algum jeito de interagir com uma variável do
> tipo "record".
>
>
> (...)
> EXECUTE query into result;
> GET DIAGNOSTICS qtd = ROW_COUNT;
>
> for i in i...qtd
> loop
>        -- aqui preciso de todos os registros de result
>        -- por exemplo: result linha "i"
> end loop;
>
>
> PS: PostgreSQL 8.3.6
>

Interagir com o tipo record ainda não é possível. Se não me engano esta no
TODO do PostgreSQL.




-- 
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a