AFAIK, bạn không thể gọi một thủ tục được lưu trữ trong máy chủ A từ máy chủ B.
Những gì tôi muốn làm là:
- Sửa đổi quy trình để đầu ra được lưu trữ trong bảng.
- Sử dụng
mysqldump
để kết xuất dữ liệu của bảng đầu ra này và lưu trữ trong máy chủ khác.
Ví dụ:
Trên máy chủ A, quy trình có thể giống như sau:
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 ;
Trên máy chủ B, thực thi câu lệnh sau trong shell, không phải trong MySQL CLI :
mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B
ở đâu:
-
<options_A>
Các tùy chọn cần thiết để kết nối với máy chủ A từ máy chủ B:
-h <IP of server A> -u <user> -p<password>
. -
db_A
Cơ sở dữ liệu trong máy chủ A nơi lưu trữ kết quả -
<options_B>
Các tùy chọn cần thiết để kết nối với máy chủ B:
-h localhost -u <user> -p<password>