MySQL过程中的全局用户定义变量



我想将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的(如果它们不是很大),所以它们可以很快读取。
  • 每个连接都可以创建具有相同名称的临时表,因为每个连接都有该临时表的"副本"。

相关内容

  • 没有找到相关文章

最新更新