将结果集选择到变量中,然后在稍后的同一存储过程中使用该变量

时间:2014-05-14 19:41:18

标签: mysql stored-procedures

好的,所以这是不可能的,或者我在谷歌搜索。 (后者更有可能在这里)
我的问题是:使用存储过程,是否可以在变量中选择id的结果集,然后使用这些id作为在同一SP中运行的更新中IN的条件? 我想要这样的事情(我知道我在这里忽略了分隔符冲突)

CREATE PROCEDURE test()
BEGIN
DECLARE var1 INT DEFAULT 0;
SELECT id INTO var1 FROM table WHERE this='this';
some other stuff
UPDATE table2 SET blah='blah' WHERE fk_id IN (var1);
END;

"其他一些东西"基本上操纵数据的方式是我无法通过在IN内部使用内部查询来获取适当的id列表,所以我基本上需要"保存"将适当的id列表放入变量中,然后再使用该变量。可以这样做吗?

请不要建议其他方法/重构我的数据/逻辑,所以我不必担心这一点。我需要知道的是,是否/如何做到这一点。我有备份选项,如果它不能完成,这将是最好的方式。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这样的事情:

CREATE PROCEDURE test()
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS tmp AS (SELECT id FROM table WHERE this='this');
some other stuff
UPDATE table2 SET blah='blah' WHERE fk_id IN (SELECT id FROM tmp);
END;