sql >> Databáze >  >> RDS >> Mysql

použijte sadu výsledků uložené procedury mysql v jiné uložené proceduře

To, co chcete udělat, nezní zvlášť dobře a možná byste měli přemýšlet o přepracování těchto 2 procesů. Jako rychlou opravu však můžete udělat něco takového:

nechte svůj sp2 sproc zapsat své mezivýsledky do dočasné tabulky, ke které pak můžete přistupovat/zpracovávat v sp1. Poté můžete zrušit dočasnou tabulku, kterou jste vytvořili v sp2, jakmile se sp1 vrátí.

http://pastie.org/883881

delimiter ;
drop procedure if exists foo;
delimiter #

create procedure foo()
begin

  create temporary table tmp_users select * from users;

  -- do stuff with tmp_users

  call bar();

  drop temporary table if exists tmp_users;

end #

delimiter ;

drop procedure if exists bar;

delimiter #

create procedure bar()
begin
  -- do more stuff with tmp_users
  select * from tmp_users;
end #

delimiter ;

call foo();

není příliš elegantní, ale mělo by to stačit



  1. načítání enwiki-latest-categorylinks.sql do mysql

  2. SQL použije sloupec z podvýběru v klauzuli where

  3. Monitorování databáze PostgreSQL:Tipy, co monitorovat

  4. Jak najít název omezení v PostgreSQL