AFAIK, nie możesz wywołać procedury przechowywanej na serwerze A z serwera B.
Co bym zrobił to:
- Zmodyfikuj procedurę, aby dane wyjściowe były przechowywane w tabeli.
- Użyj
mysqldump
aby zrzucić dane z tej tabeli wyjściowej i zapisać je na innym serwerze.
Przykład:
Na serwerze A procedura może wyglądać mniej więcej tak:
delimiter $$
create procedure my_procedure()
begin
-- Create a table to store the output:
drop table if exists temp_result;
create table temp_result (
CID int not null primary key,
name varchar(50)
);
-- Populate the table
insert into temp_result
select ...
end $$
delimiter ;
Na serwerze B wykonaj następującą instrukcję w powłoce, nie w MySQL CLI :
mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B
gdzie:
Opcje potrzebne do połączenia się z serwerem A z serwera B:-h
-u -p . db_A
Baza danych na serwerze A, na której przechowywane są wyniki
Opcje potrzebne do połączenia z serwerem B:-h localhost -u -p