我有一個返回結果集的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