[英]MySQL - Using stored procedure results to define an IN statement
我想使用存儲過程來定義select語句的IN子句。
這是我正在嘗試做的事情(的簡化版本):
SELECT *
FROM myTable
WHERE columnName IN (CALL myStoredProc)
myStoredProc
在數據庫中執行一些復雜的邏輯,並返回columnName
可能匹配值的列表。 上面的陳述顯然不起作用。 如果不同,可以在另一個存儲過程中執行select語句。
這在MySQL中根本可行嗎?
您當前的存儲過程有什么返回類型? 您說的是“列表”,所以TEXT?
也許有一種更簡單的方法,但是您可以做的一件事情(在另一個存儲過程中)是建立另一個查詢。
為此,我們需要解決MySQL的兩個限制:a)要在存儲過程中執行動態SQL,它必須是准備好的語句。 b)只能從用戶變量中創建預准備語句。 因此,完整的SQL是:
SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;
如果您要談論的是從存儲的例程中返回結果集,然后將其用作表,那是不可能的。 您需要制作一個臨時表來解決此限制 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.