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

A user-defined function (UDF) is a way to extend MySQL with a new
function that works like a native (built-in) MySQL function such as
ABS() or CONCAT().

function_name is the name that should be used in SQL statements to
invoke the function. The RETURNS clause indicates the type of the
function's return value. As of MySQL 5.0.3, DECIMAL is a legal value
after RETURNS, but currently DECIMAL functions return string values and
should be written like STRING functions.

shared_library_name is the basename of the shared object file that
contains the code that implements the function. As of MySQL 5.0.67, the
file must be located in the plugin directory. This directory is given
by the value of the plugin_dir system variable. If the value of
plugin_dir is empty, the behavior that is used before 5.0.67 applies:
The file must be located in a directory that is searched by your
system's dynamic linker. For more information, see
http://dev.mysql.com/doc/refman/5.0/en/udf-compiling.html.

To create a function, you must have the INSERT privilege for the mysql
database. This is necessary because CREATE FUNCTION adds a row to the
mysql.func system table that records the function's name, type, and
shared library name. If you do not have this table, you should run the
mysql_upgrade command to create it. See
http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html.

URL: http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html

