A função de inicialização deve retornar
0
se nenhum erro ocorrer e
1
em outro caso. Se ocorrer um erro,
xxx_init()
deve armazenar uma mensagem de
erro terminada em null no parâmetro
message
. A mensagem será retornada ao
cliente. O buffer de mensagens tem
MYSQL_ERRMSG_SIZE
caracteres, mas você
deve tentar manter a mensagem com menos que 80 caracteres
assim ela cabe na tela de terminal padrão.
O valor de retorno de uma função principal
xxx()
é o valor da função, para
funções long long
e
double
. Uma função string deve retornar
um ponteiro ao resultado e armazenar o tamanho da string no
argumento length
.
Definá-os ao conteúdo e tamanho do valor de retorno. Por exemplo:
memcpy(result, "result string", 13); *length = 13;
O buffer result
que é passado para o
cálculo da função é de 255 bytes. Se o seu resultado
couber nele, você não terá que se preocupar com alocação
de memória para os resultados.
Se a sua função string precisar retornar uma string maior
que 255 bytes, você deve alocar o espaço para ela com
malloc()
em sua função
xxx_init()
ou sua função
xxx()
e liberá-la em sua função
xxx_deinit()
. Você pode armazenar a
memória alocada na posição ptr
na
estrutura UDF_INIT
para ser reutilizado por
chamadas xxx()
futuras. See
Secção 14.2.2.1, “Sequência de Chamadas UDF para Funções Simples”.
Para indicar um valor de retorno de NULL
na
função principal, defina is_null
com
1
:
*is_null = 1;
Para indicar um erro retornado na função principal, atribua
1
ao parâmetro error
:
*error = 1;
Se xxx()
definir *error
com 1
para qualquer linha, o valor da
função é NULL
para a linha atual e
qualquer linha subsequente processada pela instrução na qual
XXX()
foi chamado.
(xxx()
nem mesmo será chamado para linhas
subsequentes.) Nota: na
versão do MySQL anterior a 3.22.10, você deve configurar
*error
e *is_null
:
*error = 1; *is_null = 1;
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.