我想将PROCEDURE的输出存储到一个全局用户定义的VAR中,这样我就可以在另一个数据库上的另一个PROCEDURE中使用这个"列表"。
第二,如果在第二个过程中使用VAR,它应该被取消设置,因为在下一次调用时它将追加或?
感谢您的回复!
BEGIN
SELECT `steamid` FROM `mybb_users` WHERE `steamid`!='';
END
SELECT语句进入一个全局变量,所以我可以在另一个过程中使用结果…
据我所知,在MySQL中,你不能返回一个行集作为一个过程的结果。
我可以通过在第一个过程中创建一个临时表,然后在第二个过程中使用这个临时表来解决这个问题。像这样:delimiter $$
create procedure procedure1()
begin
drop table if exists temp_table;
create temporary table temp_table
select steamid from mybb_users where steamid != '';
-- add the appropriate indexes here
-- alter table temp_table
-- add index ...
end $$
create procedure procedure2()
begin
-- Do whatever you want to do with temp_table
end $$
delimiter ;
记住:
- 临时表只对创建它的连接可见。
- 如果连接关闭,临时表将被删除。
- 临时表是直接创建到RAM的(如果它们不是很大),所以它们可以很快读取。
- 每个连接都可以创建具有相同名称的临时表,因为每个连接都有该临时表的"副本"。