Procedimientos almacenados
Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor.
Una vez que se hace, los clientes no necesitan relanzar los comandos individuales pero pueden en su lugar referirse al procedimiento almacenado.
Un procedimiento se invoca usando un comando CALL , y sólo puede pasar valores usando variables de salida.
Sintaxis para crear a un procedimiento almacenado
CREATE PROCEDURE nombreProcemiento (tipoParametro nombreParametro tipoDato, ...)
InstruccionesSQL ;
TipoParametro: IN, OUT, INOUT
Sintaxis para llamar a un procedimiento almacenado
CALL nombreProcemiento(parámetro1, ...);
Consideraciones
- Cuando el procedimiento contiene dos o más instrucciones, se encierran entre los comandos BEGIN y END.
- Al usar BEGIN y END para delimitar la declaración del procedimiento almacenado, se debe definir un nuevo delimitador o fin de bloque de instrucción, por medio del comando DELIMITER, es común emplear el nuevo delimitador doble diagonal, por medio de la instrucción: DELIMITER //
- Al concluir la creación del procedimiento almacenado se debe restaurar el final de instrucción predeterminado, para ello se empleará la instrucción: DELIMITER ;
Ejemplo. Crear un procedimiento almacenado que cuente el total de libros a partir del nombre de la editorial.
1. Crear procedimiento
DELIMITER //
CREATE PROCEDURE procCuentaEdit (in entrada char(20), out salida int)
BEGIN
select count(*) into salida from libros natural join editoriales where nombre=entrada;
END //
DELIMITER ;
2. Ejecutar procedimiento y visualizar resultado
mysql> CALL procCuentaEdit('Alfaomega', @total);
Query OK, 1 row affected (0.01 sec)
mysql> select @total;
+--------+
| @total |
+--------+
| 3 |
+--------+
1 row in set (0.00 sec)
Notas adicionales para administrar procedimientos almacenados
1. Visualizar procedimientos almacenados de la base de datos biblioteca
SHOW PROCEDURE STATUS WHERE db = 'biblioteca';
2. Eliminar el procedimiento almacenado procCuentaEdit
DROP PROCEDURE procCuentaEdit;