Una de las grandes novedades de la versión 5 de MySQL es sin dudas la
inclusión de soporte para procesos almacenados.
Los procedimientos almacenados son un conjunto de instrucciones SQL más
una serie de estructuras de control que nos permiten dotar de cierta lógica al
procedimiento. Estos procedimientos están guardados en el servidor y pueden ser
accedidos a través de llamadas.
Para crear un procedimiento, MySQL nos ofrece la directiva CREATE
PROCEDURE. Al crearlo éste es ligado o relacionado con la base de datos que se
está usando.
Un procedimiento
almacenado, al igual cualquiera de los procedimientos que podamos programar en
nuestras aplicaciones utilizando cualquier lenguaje, tiene:
·
Un nombre.
·
Puede tener una lista de parámetros.
·
Tiene un contenido (sección también
llamada definición del procedimiento: aquí
·
se especifica qué es lo que va a
hacer y cómo).
·
Ese contenido puede estar compuesto
por instrucciones sql, estructuras de control, declaración de variables
locales, control de errores, etcétera.
En resumen, la
sintaxis de un procedimiento almacenado es la siguiente:
CREATE PROCEDURE nombre (parámetro)
[características] definición
Puede haber más de un parámetro (se separan con comas) o puede no haber
ninguno
Los parámetros
tienen la siguiente estructura: modo nombre tipo
Donde:
Donde:
modo: es opcional y puede ser IN (el
valor por defecto, son los parámetros que el procedimiento recibirá), OUT (son
los parámetros que el procedimiento podrá modificar) INOUT (mezcla de los dos
anteriores).
§ Nombre: es el nombre del parámetro.
§ tipo: es cualquier tipo de dato de los provistos por MySQL.
§ Dentro de características es posible incluir comentarios o definir si el
procedimiento obtendrá los mismos resultados ante entradas iguales, entre otras
cosas.
§ Definición: es el cuerpo del procedimiento y está compuesto por el
procedimiento en sí: aquí se define qué hace, cómo lo hace y bajo qué
circunstancias lo hace.
Así
como existen los procedimientos, también existen las funciones. Para crear una
función, MySQL nos ofrece la directiva CREATE FUNCTION.
La diferencia entre una función y un procedimiento es que la función
devuelve valores. Estos valores pueden ser utilizados como argumentos para
instrucciones SQL.
Su sintaxis es:
CREATE FUNCTION nombre (parámetro)
RETURNS tipo
[características] definición
[características] definición
Los parámetros
tienen la siguiente estructura:nombre tipo donde:
§ Nombre: es el nombre del parámetro.
§ Tipo: es cualquier tipo de dato de los provistos por MySQL.
§ Dentro de características es posible incluir comentarios o definir si la
función devolverá los mismos resultados ante entradas iguales, entre otras
cosas.
§ Definición: es el cuerpo del procedimiento y está compuesto por el
procedimiento en sí: aquí se define qué hace, cómo lo hace y cuándo lo hace.
Desde
una función podemos invocar a su vez a otras funciones o procedimientos.
mysql> delimiter //
mysql> CREATE PROCEDURE procedimiento (IN cod INT)
-> BEGIN
-> SELECT * FROM tabla WHERE cod_t = cod;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> CALL procedimento(4);
En el
código anterior lo primero que hacemos es fijar un delimitador. Al utilizar la
línea de comandos de MySQL vimos que el delimitador por defecto es el punto y
coma (;): en los procedimientos almacenados podemos definirlo nosotros.
El procedimiento termina
y es llamado luego mediante la siguiente instrucción:
mysql> CALL procedimento(4);
No hay comentarios:
Publicar un comentario