Funciones almacenadas en MySql




En el post anterior explique brevemente qué es una función y procedimiento almacenado.

En este post mostrare la sintaxis y un ejemplo de una función almacenada.

Sintaxis de una función


Imagen 1-Sintaxis de una función.

La estructura es muy parecida a los procedimientos. Explicare la sintaxis que es propia de las funciones.








CREATE FUNCTION: Directiva que le dice a MySql que vas a crear una función.

RETURNS TYPE: Es el tipo de dato que va a retornar la función.

RETURN: Es la directiva con la que vas a retornar el dato.

Puedes asociar una función de MySql con un lenguaje de programación como C++:

string verificarProductosRepetidos(string nombre){

//declaraciones

}

string = returns char(30)

string nombre = nombre CHAR(30)

return = return

{} = BEGIN, END

Ejemplo

Lo que vamos hacer es:
1-Crear una función el cual le pasamos como argumento el nombre de un producto que se desea insertar.
2- Sí el producto ya se encuentra en la base de datos, retornamos un mensaje diciendo que no se puede insertar el producto. Si el producto no está en la base de datos retornamos un mensaje diciendo que el producto se almacenó correctamente.
Para saber si un producto está o no en la BBDD vamos hacer un SELECT con un COUNT al id, en el WHERE va ir el nombre del producto (esta puede ser una forma, pero hay otras).
COUNT nos retorna un cero, significa que el producto no está en la BBDD.

Imagen 2-Creación de la función verificar productos repetidos

La forma de ejecutar o llamar a las funciones es mediante un SELECT.

SELECT VERIFICAR_PRODUCTOS_REPETIDOS('HARINA',100)

El resultado es:


Imagen 3-Primera llamada a la función creada la cual no va insertar el producto harina porque ya está en mi BBDD.



Ejecutamos de nuevo la consulta pero le pasamos un argumento distinto.

Imagen 4-Segunda llamada a la función. Inserto el producto porque no hay un id para el producto polenta.

En MySql podemos llamadas a funciones dentro de otras funciones o podemos llamar a procedimientos.
Código fuente del ejemplo

¡Saludos pro.grammersJr del mundo!

Comentarios