Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

use o conjunto de resultados do procedimento armazenado mysql em outro procedimento armazenado


O que você quer fazer não parece particularmente bom e talvez você deva pensar em re-projetar esses 2 procs. No entanto, você pode fazer algo assim como uma solução rápida:

faça com que seu sp2 sproc escreva seus resultados intermediários em uma tabela temporária que você pode acessar/processar dentro do sp1. Você pode então descartar a tabela temporária que você criou no sp2 assim que o sp1 retornar.

http://pastie.org/883881
delimiter ;
drop procedure if exists foo;
delimiter #

create procedure foo()
begin

  create temporary table tmp_users select * from users;

  -- do stuff with tmp_users

  call bar();

  drop temporary table if exists tmp_users;

end #

delimiter ;

drop procedure if exists bar;

delimiter #

create procedure bar()
begin
  -- do more stuff with tmp_users
  select * from tmp_users;
end #

delimiter ;

call foo();

não muito elegante, mas deve fazer o truque