2009-06-30 34 views
2

我需要創建一個存儲過程或返回一組行的函數。我已經注意到,在一個存儲過程中,我可以SELECT * FROM table成功。如果我在循環中獲取行並且每個循環執行一次SELECT something, something_other FROM table,我只會得到一個單一結果。MySql從存儲過程/函數返回多行

我需要做的是循環,做一些計算並返回一個行集。什麼是最好的方法來做到這一點?臨時桌子?存儲功能?

任何幫助表示讚賞。

回答

3

這聽起來像你在存儲過程的主體內使用遊標來完成循環?

我的第一個建議是:嘗試在單個查詢中進行計算而不使用遊標。完全是什麼計算?

如果確實需要使用遊標,那麼將每個循環的結果插入一個臨時表,然後在循環完成時從該表中選擇*。

0

您可以返回多個結果集,但前提是客戶端庫支持它並且客戶端期望它。有些不這樣做,所以使用它們會導致無序錯誤。

你當然可以建立一個臨時表,從中選擇並將它放入過程中,這將是安全的。另一種選擇是使用預先準備的SQL語句構建UNION select,該語句返回所需的所有行並執行該操作。這有點凌亂。