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'.