Procedimientos Almacenados
Procedimientos Almacenados
ALMACENADOS
Un procedimiento almacenado es un conjunto de instrucciones
(comandos SQL) a las que se les da un nombre, que se almacena en el
servidor. Permiten encapsular tareas repetitivas.
Ventajas
• Permiten realizar todas las operaciones que los usuarios necesitan
evitando que tengan acceso directo a las tablas.
Desventajas
• Las instrucciones que se pueden utilizar dentro de un procedimiento
almacenado no están preparadas para implementar lógicas de negocios
muy complejas.
call NOMBRE_PROCEDIMIENTO();
Cláusula 'delimiter'
Como un procedimiento almacenado puede tener muchos comandos SQL
entre las palabras claves begin y end se debe informar de alguna manera a
MySQL que no ejecute dichos comandos.
Para ello se utiliza el comando 'delimiter' cambiando el caracter ';' como fin de
instrucción. Luego se debe codificar el procedimiento almacenado cambiando
el delimitador con la siguiente sintaxis:
delimiter //
create procedure NOMBRE_PROCEDIMIENTO()
begin
INSTRUCCIONES;
end //
delimiter ;
Se utiliza el deliminador '//' como puede ser cualquier otro, por ejemplo '$':
EJEMPLO
delimiter //
create procedure pa_libros_menos_unidades()
begin
select * from libros
where stock<=10;
end //
delimiter ;
call pa_libros_menos_unidades();
EJEMPLO
delimiter //
create procedure pa_empleados_con_hijos()
begin
select nombre,apellido,cantidadhijos
from empleados
where cantidadhijos>0;
end //
delimiter ;
call pa_empleados_con_hijos();
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS DE ENTRADA
Los procedimientos almacenados pueden recibir y devolver información, para ello se emplean
parámetros, de entrada y salida, respectivamente. Los parámetros de entrada posibilitan pasar
información a un procedimiento.
Para que un procedimiento almacenado admita parámetros de entrada se deben declarar
variables como parámetros al crearlo. La sintaxis es:
create procedure NOMBRE_PROCEDIMIENTO (in NOMBRE_PARAMETRO TIPO_DE_DATO)
begin
INSTRUCCIONES
end
• Los parámetros de entrada se definen luego del nombre del procedimiento, previo al nombre
del parámetro se le antecede la palabra clave 'in’.
• Los parámetros son locales al procedimiento, es decir, existen solamente dentro del mismo.
• Pueden declararse varios parámetros por procedimiento, se separan por comas.
• Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los
parámetros (en el orden que fueron definidos).
• Los parámetros de entrada pueden ser de cualquier tipo de dato.
EJEMPLO
delimiter //
create procedure pa_suma(
in n1 float,
in n2 float,
out resultado float)
begin
select n1+n2 into resultado;
end //
delimiter ;
select @total;
EJEMPLO