2011-08-18 90 views
2

我想在MySQL(5.x)中的WHERE語句中使用存儲函數的結果,但它失敗了,因爲在函數中我從表中選擇值變爲INT變量,然後返回它/它,如果SELECT返回多於1行顯然不工作。我試過返回一個TABLE(正如我理解的TABLE意味着MySQL中的數組),但那也不起作用。在存儲函數中返回數組

有什麼辦法,我可以這樣做:

SELECT ID FROM myTable WHERE ID IN my_function(params); 

謝謝。

回答

1

這不能做......

首先,你不能使用存儲函數返回多個結果 - 你需要使用存儲過程。

MySQL docs狀態:

語句返回結果集可以在存儲過程中而不是存儲函數內使用。

其次,您不能在查詢中使用存儲過程 - 請參閱此SO question

您是否考慮過在查詢結尾處使用'HAVING ...'?

+0

好吧,現在我有類似於'CREATE PROCEDURE my_proc(IN param INT,OUT result TABLE)'的東西,它也不起作用,它在TABLE關鍵字處失敗 –

+0

否 - 創建存儲過程的語法不同。我已經修改了我的答案以提供示例。 – amaidment

+0

是的,我也有類似的東西,但問題是,我不能在WHERE語句中使用它。類似'SELECT * FROM cities where id in(CALL isLessThan(5))' –