sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo llamar a un procedimiento almacenado en un servidor MySQL Ubuntu remoto?

AFAIK, no puede llamar a un procedimiento almacenado en el servidor A desde el servidor B.

Lo que haría es:

  1. Modifique el procedimiento para que la salida se almacene en una tabla.
  2. Utilice mysqldump para volcar los datos de esta tabla de salida y almacenarlos en el otro servidor.

Ejemplo:

En el servidor A, el procedimiento puede ser algo como esto:

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 ;

En el servidor B, ejecute la siguiente declaración en el shell, no en MySQL CLI :

mysqldump <options_A> db_A temp_result --no-create-db --add-drop-table | mysql <options_B> db_B

donde:

  • <options_A> Las opciones necesarias para conectarse al servidor A desde el servidor B:
    -h <IP of server A> -u <user> -p<password> .
  • db_A La base de datos en el servidor A donde se almacena el resultado
  • <options_B> Las opciones necesarias para conectarse al servidor B:
    -h localhost -u <user> -p<password>