La función de inicialización debe retornar
0
si no hay errores y 1
en cualquier otro caso. Si ocurre un error,
xxx_init()
debe almacenar un mensaje de
error terminado en null en el parámetro
message
. El mensaje se retorna al cliente.
El búffer de mensajes es de longitud
MYSQL_ERRMSG_SIZE
, pero debe tratar que el
mensaje ea inferior a 80 caracteres para que coincida con la
anchura de una pantalla de terminal estándar.
El valor retornado por una función principal
xxx()
es el valor de la función, para
funciones long long
y
double
. Una función de cadenas de
caracteres debe retornar un puntero al resultado y asignar
*result
y *length
con
los contenidos y longitud del valor de retorno. Por ejemplo:
memcpy(result, "result string", 13); *length = 13;
El búffer result
que se pasa a la función
xxx()
tiene longitud de 255 bytes. Si su
resultado coincide con esto, no tiene que preocuparse acerca
de reservar memoria para los resultados.
Si su función de cadenas de caracteres necesita retornar una
cadena de caracteres mayor a 255 bytes, debe reservar el
espacio para ello con malloc()
en su
función xxx_init()
o su función
xxx()
y liberarla en su función
xxx_deinit()
. Puede almacenar la memoria
reservada en la entrada ptr
en la
estructura UDF_INIT
para reusar para
llamadas futuras xxx()
. Consulte
Sección 27.2.3.1, “Secuencias de llamada UDF para funciones simples”.
Para indicar un valor de retorno de NULL
en
la función principal, asigne a *is_null
1
:
*is_null = 1;
Para indicar un retorno de error en la función principal,
inicialice *error
con 1
:
*error = 1;
Si xxx()
asigna a *error
1
para cualquier registro, el valor de la
función es NULL
para el registro actual y
para cualquier subsecuente registro procesado por el comando
en que se invoca XXX()
.
(xxx()
no se llama ni por registros
subsecuentes.) Nota: Antes de
MySQL 3.22.10, debe asignar tanto *error
como *is_null
:
*error = 1; *is_null = 1;
É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.