----- Mensagem original ----- > De: "Marcelo da Silva" <[email protected]> > Para: "Comunidade PostgreSQL Brasileira" <[email protected]> > Enviadas: Segunda-feira, 8 de abril de 2013 9:03:45 > Assunto: [pgbr-geral] Função para concatenar resultados > > 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;
Ajuste o bloco acima. Tem um errinho de lógica. A variável "result" é trocada a cada interação do loop. Dica: use outra variável e a declare. No declare, coloque uma nova variável como: result_concat character varying; Para assinalar um valor a uma variável você também tem de usar ":=" e não somente "=". Exemplo de um loop que *talvez* funcione, você tem de testar: result_concat := ''; for result in select distinct email from mv_clientes_emails where (cod_id = $1) loop result_concat := result_concat || ',' || result; end loop; Ajuste aí e veja se funciona. []s __________________________________ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos & Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: [email protected] ______________________________ FREE SOFTWARE SOLUTIONS _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
