Crear una función en MySQL

Aunque se trate de algo muy básico a la hora de programar bases de datos, creo que no está de más hablar de la sintáxis para la creación de funciones definidas por el usuario en MySQL. Dicha sintaxis es la siguiente:

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}
       SONAME shared_library_name

Explicado rápidamente: function_name es el nombre con el que se va a invocar dicha función. RETURNS nos indica, por otra parte, qué tipo de dato recibiremos como respuesta. Y shared_library_name es el nombre del fichero del objeto compartido que guarda el código de la función. El modificador opcional AGGREGATE permite definir la función como una función de agregado (como SUM() o COUNT()).

Para poder crear una función se necesita tener permiso de INSERT en la base de datos, mientras que para eliminarla se necesitan permisos de DELETE. La sintaxis de borrado de una función es:

DROP FUNCTION function_name

MySQL además del uso de funciones SQL permite también el uso de funciones de C y C++ (como SQL-Server permite el uso de funciones contenidas en una .dll u Oracle el uso de Java). En caso de querer usar una función de C hay que recordar que los tipos de datos en C no se llaman igual que en SQL, para definir el retorno de la función. STRING sería char *, INTEGER sería long long y REAL sería double. También es interesante, aunque no obligatorio, definir una función nombredelafuncion_init() y nombredelafuncion_deinit(), el primero para reservar memoria y el segundo para liberarla. Recuerda que C no reserva memoria automáticamente, así que puede ser indispensable para el uso de la función si esta requiere algo de RAM. Las funciones en C o C++ deben compilarse e instalarse en el equipo donde corre el servidor.

Anuncios

Un comentario en “Crear una función en MySQL

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s