Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie die Ergebnismenge der gespeicherten MySQL-Prozedur in einer anderen gespeicherten Prozedur

Was Sie tun möchten, klingt nicht besonders gut und vielleicht sollten Sie darüber nachdenken, diese 2 Procs neu zu gestalten. Als schnelle Lösung könnten Sie jedoch Folgendes tun:

Lassen Sie Ihre SP2-Sproc ihre Zwischenergebnisse in eine temporäre Tabelle schreiben, auf die Sie dann innerhalb von SP1 zugreifen/verarbeiten können. Sie können dann die temporäre Tabelle löschen, die Sie in SP2 erstellt haben, sobald SP1 zurückkehrt.

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();

nicht sehr elegant, sollte aber reichen