簡體   English   中英

MySQL-使用存儲過程結果定義一個IN語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM