AFAIK, Sie können eine auf Server A gespeicherte Prozedur nicht von Server B aufrufen.
Was ich tun würde, ist:
- Ändern Sie die Prozedur so, dass die Ausgabe in einer Tabelle gespeichert wird.
- Verwenden Sie
mysqldump
um die Daten dieser Ausgabetabelle zu dumpen und auf dem anderen Server zu speichern.
Beispiel:
Auf Server A kann die Prozedur etwa so aussehen:
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 ;
Führen Sie auf Server B die folgende Anweisung in der Shell aus, nicht in der MySQL-CLI :
mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B
wo:
<options_A>
Die Optionen, die benötigt werden, um sich von Server B mit Server A zu verbinden:-h <IP of server A> -u <user> -p<password>
.db_A
Die Datenbank auf Server A, wo das Ergebnis gespeichert wird<options_B>
Die für die Verbindung mit Server B erforderlichen Optionen:-h localhost -u <user> -p<password>