我有一个MYSQL存储过程SP1(),它返回一个结果集。
我想在SP2()中调用SP1()并循环遍历SP1()的结果集以进行一些额外的工作。
我不想在SP1()中包含我的逻辑,因为它会使SP2()过于复杂。
有什么建议吗?
感谢。
答案 0 :(得分:4)
你想做的事情听起来不是特别好,也许你应该考虑重新设计这两个过程。但是,你可以做一些像这样的快速修复:
让你的sp2 sproc将它的中间结果写入临时表,然后你可以在sp1中访问/处理它。然后,一旦sp1返回,您就可以删除在sp2中创建的临时表。
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();
不是很优雅,但应该做到这一点
答案 1 :(得分:0)
游标有助于解决问题。
我不确定这是否可行但是 为SP1()的select调用创建一个游标,并像往常一样迭代它们。