sábado, 4 de mayo de 2013

Procedimientos almacenados y funciones en MySQL


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:

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  

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