我有一个MYSQL存储过程SP1(),它返回一个结果集。
我想在SP2()内调用SP1()并遍历SP1()的结果集以执行一些其他工作。
我不想从SP1()中包含我的逻辑,因为这会使SP2()过于复杂。
有什么建议么?
谢谢。
最佳答案
您想做的听起来并不特别好,也许您应该考虑重新设计这两个过程。但是,您可以执行以下操作来快速解决此问题:
使您的sp2 sproc将其中间结果写入临时表,然后可以在sp1内部进行访问/处理。一旦sp1返回,就可以删除在sp2中创建的临时表。
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();
不是很优雅,但应该可以解决问题