использовать набор результатов хранимой процедуры mysql в другой хранимой процедуре - PullRequest
3 голосов
/ 18 марта 2010

У меня есть хранимая процедура MYSQL SP1 (), которая возвращает набор результатов.

Я хочу вызвать SP1 () внутри SP2 () и просмотреть список результатов SP1 (), чтобы выполнить дополнительную работу.

Я не хочу включать свою логику из SP1 (), потому что это сделает SP2 () слишком сложным.

Есть предложения?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 24 марта 2010

То, что вы хотите сделать, звучит не очень хорошо, и, возможно, вам следует подумать о переделке этих двух процессов. Тем не менее, вы можете сделать что-то вроде этого как быстрое решение:

заставить вашего sp2 sproc записать промежуточные результаты во временную таблицу, которую вы затем сможете получить к доступу / обработать внутри sp1 После этого вы можете удалить временную таблицу, созданную в sp2, когда sp1 вернется.

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

не очень элегантно, но должно сработать

0 голосов
/ 18 марта 2010

Курсоры помогут решить проблему.

Я не уверен, возможно ли это, но сделайте курсор для вызова выбора для SP1 () и выполните итерации по ним, как обычный курсор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...