Ao invés de usar um LOOP que pode sair bem caro, você pode utilizar ARRAYs
que são bem eficientes. Veja o exemplo:
CREATE TABLE teste (abizi varchar);
INSERT INTO teste VALUES ('AAA'),('BBB'),('CCC'),('DDD');
SELECT array_to_string(array_agg(abizi),',') FROM teste;
Aqui usei duas funções com array, uma de aggregação: array_agg[1] e outra
para transformar o array numa string, o array_to_string[2].
[1] http://www.postgresql.org/docs/current/static/functions-aggregate.html
[2] http://www.postgresql.org/docs/current/static/functions-array.html
OBS: Se for usar uma função mesmo, lembre-se de declarar como IMMUTABLE e
não como VOLATILE. Assim o desempenho da sua função melhora muito.
[]s
2013/4/8 Marcelo da Silva <[email protected]>
> Pessoal estou tentando concatenar numa string o resultado de um select:
>
> email1, email2, email3, etc
>
> Sei pouca coisa em termos de funções em Postgres, criei a função abaixo
> pra isso.
> Mas está faltando o principal que é concatenar, vejam:
>
> CREATE OR REPLACE FUNCTION femailsclientes(integer)
> RETURNS character varying AS
> $BODY$
> declare
> result character varying;
> begin
>
> for result in select distinct email from mv_clientes_emails where
> (cod_id = $1)
> loop
> result = result || ',' || result;
> end loop;
> return result;
>
> end;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
> ALTER FUNCTION femailsclientes(integer)
> OWNER TO postgres;
>
> Podem me ajudar?
>
> Obrigado
> ...............................
>
> Marcelo Silva
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
--
Atenciosamente,
Fábio Telles Rodriguez
blog: http:// <http://www.midstorm.org/~telles/>s<http://tellesr.wordpress.com/>
avepoint.blog.br
e-mail / gtalk / MSN: [email protected]
Skype: fabio_telles
Timbira - A empresa brasileira de Postgres
http://www.timbira.com.br
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral