Cómo añadir un procedimiento (o función) almacenado a un servidor de base de datos MySQL Server y cómo usarlo en consultas SQL. Como ejemplo añadiremos un procedimiento almacenado (stored procedure) que codificará el valor pasado como parámetro de HTML a texto plano, es decir, si el texto pasado como parámetro contiene algún carácter de escape de HTML lo convertirá a su carácter normal.

Requisitos para crear procedimiento almacenado stored procedure en MySQL Server

Servidor con MySQL Server

En primer lugar necesitaremos disponer de acceso a un servidor con MySQL Server, bien sea en Linux o en Windows. A continuación mostramos algunos tutoriales para instalar MySQL Server tanto en Linux como en Windows:

Herramienta software de administración de MySQL Server

Para el acceso al servidor de MySQL Server, para la administración y poder crear un procedimiento almacenado tendremos varias posibilidades:

  • Usar la herramienta de la línea de comandos y crear el procedimiento de forma manual con su SQL asociado. Esto puede resultar bastante arduo y engorroso, sobre todo si el procedimiento almacenado tiene muchas líneas de código.
  • Usar una herramienta software en modo gráfico: esto es lo habitual y podemos usar herramientas gratuitas oficiales del propio MySQL, como MySQL Administrator o MySQL Workbench. En este tutorial mostraremos cómo crear un procedimiento o función MySQL usando tanto MySQL Administrator como MySQL Workbench.

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

A continuación mostraremos cómo añadir un procedimiento o función a un servidor MySQL Server usando el software MySQL Administrator. Para ello deberemos disponer de este software (es oficial de MySQL y gratuito). Iniciaremos sesión en MySQL Administrator contra el servidor MySQL Server que consideremos, accederemos a la pestaña «Stored procedures» y, para crear un nuevo, pulsaremos en «Create Stored Proc»:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

Introduciremos un nombre para el procedimiento almacenado o función, en nuestro caso, HTML_UnEncode y pulsaremos si va a ser un procedimiento en «Create PROCEDURE», si va a ser una función en «Create FUNCTION». En nuestro caso será una función pues devolverá un valor de cadena. Aunque pulsando cualquiera de los dos botones en el código del procedimiento/función se puede especificar si es un procedimiento (PROCEDURE) o una función (FUNCTION):

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

Si hemos elegido «Create PROCEDURE» nos habrá generado el código:

CREATE PROCEDURE ‘nombreBD’.’nombre_procedimiento’ ()
BEGIN
# código del procedimiento
END

Si hemos elegido «Create FUNCTION» nos habrá generado el código:

CREATE FUNCTION nombre_BD.nombre_funcion () RETURNS INT
BEGIN

# código de la función
END

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

Cambiaremos el código generado automáticamente por el que queramos que realice nuestro procedimiento/función. En nuestro caso añadiremos una función a la que se le pasará como parámetro un valor de texto (string / varchar) y devolverá otro valor de texto, lo que hará el código de la función será convertir los caracteres HTML en caracteres normales. Una vez que hayamos introducido el código para el procedimiento/función pulsaremos en «Execute SQL» que comprobará la sintaxis y ejecutará el SQL de creación del procedimiento/función:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

Nota: en el código del procedimiento/función se le puede indicar qué usuarios y desde qué IP podrán ejecutarlo, por ejemplo:

  • CREATE DEFINER=’root’@’%’ indica que dicho procedimiento podrá ser ejecutado por el usuario root y desde cualquier IP (%).

Si todo es correcto el procedimiento/función quedará guardada en el servidor MySQL Server y podrá ser usado por cualquier aplicación que lo requiera:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Administrator

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

A continuación mostraremos cómo añadir un procedimiento o función a un servidor MySQL Server usando el software MySQL Workbench. Para ello deberemos disponer de este software (es oficial de MySQL y gratuito). Iniciaremos sesión en MySQL Workbench contra el servidor MySQL Server que consideremos, pulsaremos en el botón «Create a new function…» o bien «Create a new stored procedure», según queramos generar un procedimiento (no devolverá nada) o una función (devolverá un valor):

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

El asistente nos habrá generado un pequeño código para crear una función vacía:

  • En el caso de una función (function):

CREATE FUNCTION new_function ()
RETURNS INTEGER
BEGIN
RETURN 1;
END

  • En el caso de un procedimiento almacenado (stored procedure):

CREATE PROCEDURE new_procedure ()
BEGIN
END

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

Introduciremos el código que queramos para la función o el procedimiento y pulsaremos en «Apply»:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

El asistente para crear un nuevo procedimiento/función de MySQL Workbench nos mostrará el script SQL que se ejecutará, pulsaremos en «Apply»:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

Nos mostrará el resultado de la creación del procedimiento/función, si todo es correcto nos mostrará «SQL script was successfully applied to the database», pulsaremos «Finish»:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

En la parte izquierda, en Functions o en Stored Procedures podremos consultar las funciones y procedimientos almacenados de nuestro servidor MySQL Server:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

Pulsando con el botón derecho del ratón sobre el procedimiento o función que queramos podremos editarlo o eliminarlo:

Añadir procedimiento almacenado stored procedure en servidor MySQL Server con MySQL Workbench

Cómo usar un procedimiento o función de MySQL Server en cualquier aplicación

Una vez que hayamos creado el procedimiento o función como hemos indicado anteriormente, ya podremos usarlo en cualquier aplicación que conecte con MySQL Server. Por ejemplo, en nuestro caso, para usar la función HTML_UnEncode en una consulta SQL en el lenguaje de programación Delphi haremos lo siguiente:

Como vemos en el código de ejemplo, la función HTML_UnEncode creada se utiliza como una función más de MySQL Server y se añada en la sentencia SQL, en este caso le pasamos como parámetro el valor de un campo de texto y nos devuelve dicho valor pero reemplazando los caracteres unicode HTML por su correspondencia en caracteres normales.

Stored Procedure de ejemplo para convertir códigos HTML a caracteres normales

A continuación mostramos el contenido del procedimiento almacenado de ejemplo que hemos usado en este tutorial. En este caso hemos creado una función a la que se le pasa como parámetro un valor de texto y devuelve otro valor de texto, reemplazando los caracteres de escape propios de HTML en texto normal: