Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso chamar um procedimento armazenado em um servidor MySQL Ubuntu remoto?


AFAIK, você não pode chamar um procedimento armazenado no servidor A do servidor B.

O que eu faria é:
  1. Modifique o procedimento para que a saída seja armazenada em uma tabela.
  2. Usar mysqldump para despejar os dados desta tabela de saída e armazená-los no outro servidor.

Exemplo:

No servidor A, o procedimento pode ser algo assim:
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 ;

No servidor B, execute a seguinte instrução no shell, não na CLI do MySQL :
mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B

Onde:
  • <options_A> As opções necessárias para se conectar ao servidor A do servidor B:
    -h <IP of server A> -u <user> -p<password> .
  • db_A O banco de dados no servidor A onde o resultado é armazenado
  • <options_B> As opções necessárias para se conectar ao servidor B:
    -h localhost -u <user> -p<password>