Cómo añadir una función al motor de base de datos MySQL que puede ser usada en cualquier consulta SQL. Usaremos una función de ejemplo que decodifica un texto HTML.

Requisitos para agregar función a motor de BD MySQL

Necesitaremos disponer de un servidor con el motor de base de datos MySQL Server. En nuestro caso usaremos un servidor en Linux Ubuntu 11.10, con MySQL 5.1.58. En este sitio web encontraréis multitud de artículos sobre cómo instalar MySQL tanto en Linux como en Windows:

Para conectarnos a MySQL y crear la función usaremos MySQL Workbench. Se trata de una aplicación gratuita que podéis descargar e instalar desde la web oficial de MySQL.

Agregar función a MySQL Server desde MySQL Workbench

Para agregar una función usaremos el cliente de conexión y gestión MySQL Workbench, que es gratuito y está disponible en la web oficial de MySQL. Para el caso que nos ocupa, dado que el servidor MySQL está en la versión 5, usaremos la versión 6.3 de MySQL Workbench, las versiones recientes de esta aplicación no funcionan bien con versiones anteriores de MySQL.

Conectaremos con el servidor de MySQL desde MySQL Workbench:

Agregar función a MySQL Server desde MySQL Workbench

Lógicamente deberemos acceder con un usuario con permisos suficientes para agregar funciones. Abriremos el catálogo (base de datos) al que queramos añadir la función, pulsando doble click sobre él [1], se cambiará a negrita. Copiaremos o escribiremos el CREATE de la función completa en la ventana de Query que se abrirá a la derecha [2]. En nuestro caso agregaremos la siguiente función, que es un poco larga porque reemplaza todos los caracteres de escape de un texto en HTML por su correspondiente ASCII:

Una vez agregada la función, para ejecutar el SQL y crearla, pulsaremos en el botón «Execute Current Statement» [3]. Si el código de la función es correcto MySQL Workbench mostrará un mensaje en la parte inferior [4] indicando que se ha creado correctamente la función:

Agregar función a MySQL Server desde MySQL Workbench

Para comprobar que la función se ha agregado, en la parte izquierda, en Functions, pulsaremos con el botón derecho y seleccionaremos «Refresh All»:

Agregar función a MySQL Server desde MySQL Workbench

Nos mostrará la nueva función agregada, en nuestro caso «HTML_UnEncode». Desde aquí, pulsando con el botón derecho del ratón, podremos, por ejemplo, modificarla con Alter Function:

Agregar función a MySQL Server desde MySQL Workbench

Probar la función creada en MySQL en una consulta SQL

Para probar la función anterior podemos usarla, por ejemplo, en una consulta SQL:

La consulta SQL anterior ejecutará la función HTML_UnEncode que reemplazará los caracteres de escape HTML por su corresondiente carácter ASCII, devolviendo:

Ejemplo de «decodificación» de caracteres de escape HTML: eñe

Probar la función creada en MySQL en una consulta SQL