MySQL Function
Olá,
Galera estou necessitando criar uma função mysql que ao passar um parâmetro, busque na tabela rh os nomes dos corretores que estão ligados a precaptação de um imóvel.
A query seria algo assim:
select b.nome_razao from financeiro_imob.pre_captacao_corretores a inner join financeiro_imob.rh b on a.cnpj_cpf_rh = b.cnpj_cpf_rh where a.id_precaptacao = id;
A query acima deverá me retornar pelo menos 1 tupla, mas como tb podem ser n tuplas.
Até agora, lendo a documentação do mysql cheguei a esse script:
delimiter//
drop function if exists CorretoresPreCaptacao//
create function CorretoresPreCaptacao(id int) returns text
begin
declare done int default 0;
declare a text;
declare temp varchar(200);
declare rs cursor for select b.nome_razao from financeiro_imob.pre_captacao_corretores a inner join financeiro_imob.rh b on a.cnpj_cpf_rh = b.cnpj_cpf_rh where a.id_precaptacao = id;
declare continue handler for not found set done = 1;
set a = "";
open rs;
fetch rs into temp;
while not done do
begin
set a := a & ', ' & temp;
fetch rs into temp;
end;
end while;
close rs;
return a;
end//
delimiter ;
E na query uso:
CorretoresPreCaptacao(id_precaptacao)
Usando o "return a;" acima o resultado da consulta me retorna nulo, mas se eu puser "return temp;" ele me retorna o último nome da pesquisa, obviamente pois o fetch associa o resultado do ponteiro a "temp" a cada while.
O que eu gostaria de saber é como usar uma variável para concatenar cada nome, vindo da variável "temp" separado por vírgulas?
A criação da function não dá erro, pois a sintaxe está correta. Apenas creio que seja um problema de semântica.
Obrigado!
Discussão (2)
Carregando comentários...