O parâmetro args aponta para uma estrutura
          UDF_ARGS que tem os mambros listados
          abaixo:
        
              unsigned int arg_count
            
O número de argumentos. Verifique o valor na função de inicialização se você quiser que ssua função seja chamada com um número específico de argumentos. For exemplo:
if (args->arg_count != 2)
{
    strcpy(message,"XXX() requires two arguments");
    return 1;
}
              enum Item_result *arg_type
            
              Os tipos para cada argumento. Os valores de tipos
              possíveis são STRING_RESULT,
              INT_RESULT, e
              REAL_RESULT.
            
              Para ter certeza que os argumentos são de um tipo dado e
              retornar um erro se não forem, verifique o vetor
              arg_type na função de
              inicialização. Por exemplo:
            
if (args->arg_type[0] != STRING_RESULT ||
    args->arg_type[1] != INT_RESULT)
{
    strcpy(message,"XXX() requires a string and an integer");
    return 1;
}
              Como uma alternativa para exigir que os argumentos de sua
              função sejam de um tipo específico, você pode usar a
              função de inicialização para definir o elemento
              arg_type com o tipo que você quiser.
              Isto faz com que o MySQL converta argumentos para aqueles
              tipo a cada chamada de xxx(). Por
              exemplo, para fazer conversão dos dois primeiros
              argumentos para string e integer, faça isto com
              xxx_init():
            
args->arg_type[0] = STRING_RESULT; args->arg_type[1] = INT_RESULT;
              char **args
            
              args->args informa a função de
              inicialização sobre a natureza geral dos argumentos
              chamados com sua função. Para um argumento constante
              i, args->args[i]
              aponta para o valor do argumento. (Veja abaixo sobre
              instruções de como acessar o valor de forma apropriada).
              Para um argumento não constante,
              args->args[i] é
              0. Um argumento constante é uma
              expressão é uma expressão que utiliza apenas constante,
              tais como 3 ou 4*7-2
              ou SIN(3.14). Um argumento não
              constante é uma expressão que refere a valores que podem
              alterar a cada linha, tais como nomes de coluna ou
              funções que são chamadas com argumentos não contantes.
            
              Para cada chamada da função principal,
              args->args contém os argumentos
              atuais que são passados pela linhas sendo processadas
              atualmente.
            
              As funções podem se referir a um argumento
              i como a seguir:
            
                    Um argumento do tipo
                    STRING_RESULT é dado como um
                    apontador string mais um tamanho, para permitir o
                    tratamento de dados binários de tamanho
                    arbitrário. Os conteúdo da string estão
                    disponíveis como
                    args->args[i] e o tamanho da
                    string é args->lengths[i].
                    Você não deve assumir aue as strings são
                    terminadas em null.
                  
                    Para um argumnto do tipo
                    INT_RESULT, você deve converter
                    args->args[i] para um valor
                    long long:
                  
long long int_val; int_val = *((long long*) args->args[i]);
                    Para um argumento do tipo
                    REAL_RESULT, você deve converter
                    args->args[i] para um valor
                    double:
                  
double real_val; real_val = *((double*) args->args[i]);
              unsigned long *lengths
            
              Para a função de inicialização, o vetor
              lengths indica o tamanho máximo da
              string para cada argumento. Você não deve alterá-los.
              Para cada chamada da função principal,
              lengths contém o tamanho atual de
              quaisquer argumentos string que são passados para a linha
              sendo processada atualmente. Para argumentos do tipo
              INT_RESULT ou
              REAL_RESULT, lengths
              ainda contém o tamanho máximo do argumento (como para a
              função de inicialização).
            
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.

