| Listado completo de tutoriales 107 - Procedimientos almacenados (llamar a otro procedimiento desde un procedimiento existente) | 
Un procedimiento almacenado puede llamar a otro procedimiento almacenado. El procedimiento que es invocado por otro debe existir cuando creamos el procedimiento que lo llama. Es decir, si un procedimiento A llama a otro procedimiento B, B debe existir al crear A.
Creamos un procedimiento almacenado que reciba 2 números enteros y nos retorne el producto de los mismos:
drop procedure if exists pa_multiplicar; delimiter // create procedure pa_multiplicar( in numero1 int, in numero2 int, out producto int) begin set producto=numero1*numero2; end // delimiter ; call pa_multiplicar(20,3,@resu); select @resu;
Hasta ahora hemos planteado un procedimiento almacenado y su llamada para ver si su algoritmo genera el resultado deseado.
Ahora crearemos un segundo procedimiento almacenado que nos retorne el factorial de un número que llamará al procedimiento 'pa_multiplicar':
drop procedure if exists pa_multiplicar;
 
delimiter // 
create procedure pa_multiplicar(
  in numero1 int,
  in numero2 int,
  out producto int)
begin
  set producto=numero1*numero2;
end // 
delimiter ;
drop procedure if exists pa_factorial;
delimiter // 
create procedure pa_factorial(
  in numero int,
  out resultado int)
begin  
  declare num int;
  set resultado=1;
  set num=numero;
  while num>1 do
     call pa_multiplicar(resultado,num,resultado);
     set num=num-1;
  end while;
end //    
delimiter ;
call pa_factorial(5, @resu);
select @resu;
El procedimiento almacenado 'pa_factorial' en su algoritmo llama al procedimiento 'pa_multiplicar'.