CREATE [AGGREGATE] FUNCTIONfunction_name
RETURNS {STRING|INTEGER|REAL} SONAMEshared_library_name
DROP FUNCTIONfunction_name
Una funciones definidas por el usuario (UDF) es un modo de
extender MySQL con una nueva función que funciona como una
función nativa de MySQL tal como ABS()
o
CONCAT()
.
function_name
es el nombre que debe
usarse en comandos SQL para invocar la función. La cláusula
RETURNS
indica el tipo del valor de retorno
de la función. shared_library_name
es el nombre base de la fichero del objeto compartido que
contiene el código que implementa la función. El fichero debe
localizarse en un directorio en el que busque el lincador
dinámico del sistema.
Para crear una función , debe tener el privilegio
INSERT
para la base de datos
mysql
. Para borrar una función, debe tener
el privilegio DELETE
para la base de datos
mysql
. Esto es así porque CREATE
FUNCTION
añade un registro a la tabla de sistema
mysql.func
que registra los nombres de
función, tipo, y nombre de la biblioteca compartida, y
DROP FUNCTION
borra el registro de la
función de dicha tabla. Si no tiene esta tabla, debe ejecutar
el script mysql_fix_privilege_tables para
crearla. Consulte Sección 2.10.2, “Aumentar la versión de las tablas de privilegios”.
Una función activa es una que se ha cargado con CREATE
FUNCTION
y no se ha eliminado con DROP
FUNCTION
. Todas las funciones activas se recargan cada
vez que el servidor arranca, a no ser que arranque
mysqld con la opción
--skip-grant-tables
. En este caso, la
inicialización de UDF no se hace y no están disponibles.
Para instrucciones sobre escribir funciones definidas por el usuario consulte Sección 27.2.3, “Añadir una nueva función definida por el usuario”. Para que funcione el mecanismo de UDF, las funciones deben escribirse en C o C++, su sistema operativo debe soportar carga dinámica y debe haber compilado mysqld dinámicamente (no estáticamente).
AGGREGATE
es una nueva opción para MySQL
3.23. Una función AGGREGATE
funciona
exactamente como una función agregada (resumen) de MySQL tal
como SUM
o COUNT()
. Para
que funcione AGGREGATE
, su tabla
mysql.func
debe contener una columna
type
. Si su tabla
mysql.func
no tiene esta columna, debe
ejecutar el script mysql_fix_privilege_tables
para crearla.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.