我有一个执行SELECT的id的存储过程(它在一个过程中的原因是它首先检查选择哪个ID)。
我想在SELECT * FROM products WHERE productID IN <resultSet>
这样的过程查询中使用该结果集。
但我不知道如何将程序的结果集放入范围/间隔/ ...?变量来执行该选择。我错过了什么?
修改:这个问题与SQL server stored procedure return a table实际上并不重复,它只是具有相同的解决方案:存储过程不会返回任何内容。
答案 0 :(得分:1)
MySQL存储过程不会返回值,但是你可以将结果存储在临时表中并在另一个查询中使用它们,怎么做?
在存储过程中,创建一个包含结果值的临时表:
create procedure your_procedure()
drop temporary table if exists _procedure_result_tmp;
-- dump the result in a temporary table
create temporary table _procedure_result_tmp
select id from your_table where <condition>;
end
在查询中使用_procedure_result_tmp
表:
call your_procedure();
select * FROM your_other_table
where id in (select id from _procedure_result_tmp);