我有一个返回结果集的MYSQL存储过程SP1()。在另一个存储过程中使用mysql存储过程的结果集
我想调用SP2()内部的SP1(),并通过SP1()的结果集循环做一些额外的工作。
我不想包括我的逻辑从SP1(),因为它会使SP2()太复杂。
有什么建议吗?
谢谢。
我有一个返回结果集的MYSQL存储过程SP1()。在另一个存储过程中使用mysql存储过程的结果集
我想调用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();
不是很优雅,但应该做的伎俩
是的,我最终重新设计了存储过程,解决方案接近您的建议。 SP1()现在创建一个临时表,然后使用光标读取我称为SP2()的每一行。我不知道这是否是一种好的做法,但现在起作用。 – hmak 2010-04-02 21:37:58
酷 - 你会接受一些答案很快谢谢:) – 2010-04-02 23:50:19
对不起,我只是注意到我不接受! – hmak 2010-12-30 21:25:02