我有一个返回结果集的 MYSQL 存储过程 SP1()。
我想在 SP2() 内部调用 SP1() 并循环遍历 SP1() 的结果集来做一些额外的工作。
我不想包含 SP1() 中的逻辑,因为它会使 SP2() 太复杂。
有什么建议吗?
谢谢。
最佳答案
你想做什么听起来不是特别好,也许你应该考虑重新设计这 2 个过程。但是,您可以做这样的事情作为快速修复:
让您的 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();
不是很优雅,但应该可以解决问题
关于mysql - 在另一个存储过程中使用mysql存储过程的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313100/