El parámetro args apunta a una estructura
          UDF_ARGS que tiene los miembros listados a
          continuación:
        
              unsigned int arg_count
            
Número de argumentos. Chequee este valor en la función de inicialización si necesita que su función sea llamada con un número particular de argumentos. Por ejemplo:
if (args->arg_count != 2)
{
    strcpy(message,"XXX() requires two arguments");
    return 1;
}
              enum Item_result *arg_type
            
              Puntero a una matriz conteniendo los tipos para cada
              argumento. Los tipos posibles son
              STRING_RESULT,
              INT_RESULT, y
              REAL_RESULT.
            
              Par asegurar que los argumentos sean de un tipo dado y
              retorne un error si no lo son, chequee la matriz
              arg_type en la función de
              inicialización. Por ejemplo:
            
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 alternativa a requerir que los argumentos de la
              función sean de un tipo particular, puede usar la
              función de inicialización para asignar los elementos
              arg_type con los tipos que quiera. Esto
              hace que MySQL fuerce a los argumentos a los tipos para
              cada llamada de xxx(). Por ejemplo,
              para especificar que los primeros dos argumentos se
              fuercen a una cadena de caracteres de enteros,
              respectivamente, haga lo siguiente en
              xxx_init():
            
args->arg_type[0] = STRING_RESULT; args->arg_type[1] = INT_RESULT;
              char **args
            
              args->args comunica información a
              la función de inicialización acerca de la naturaleza
              general de los argumentos pasados a la función. Para un
              argumento constante i,
              args->args[i] apunta al valor del
              argumento. (Consulte a continuación instrucciones sobre
              cómo acceder al valor apropiadamente.) Para argumentos no
              constantes, args->args[i] es
              0. Un argumento constante es una
              expresión que usa sólo constantes, como
              3 o 4*7-2 o
              SIN(3.14). Un argumento no constante es
              una expresión que se refiere a valores que pueden cambiar
              de registro a registro, tales como nombres de columna o
              funciones que se llaman con argumentos no constantes.
            
              Para cada invocación de la función principal,
              args->args contiene los argumentos
              que se pasan para el registro que está procesando.
            
              Las funciones pueden referirse a un argumento
              i como se muestra:
            
                    Un argumento de tipo
                    STRING_RESULT se da como puntero
                    a una cadena de caracteres más una longitud, para
                    permitir tratar datos binarios o datos
                    arbitráriamente largos. Los contenidos de la cadena
                    de caracteres están disponibles como
                    args->args[i] y la longitud de
                    la cadena es args->lengths[i].
                    No debe asumir que las cadenas de caracteres están
                    terminadas por null.
                  
                    Para un argumento de tipo
                    INT_RESULT, debe convertir
                    args->args[i] a un valor
                    long long :
                  
long long int_val; int_val = *((long long*) args->args[i]);
                    Para un argumento de tipo
                    REAL_RESULT, debe convertir
                    args->args[i] a un valor
                    double :
                  
double real_val; real_val = *((double*) args->args[i]);
              unsigned long *lengths
            
              Para la función de inicialización, la matriz
              lengths indica la longitud máxima de
              cadena de caracteres para cada argumento. No debe cambiar
              este valor. Para cada invocación de la función principal
              lengths contiene las longitudes reales
              de cualquier argumento de cadenas de caracteres que se
              pasa al registro en proceso. Para argumentos de tipos
              INT_RESULT o
              REAL_RESULT, lengths
              contiene la longitud máxima del argumento (como para la
              función de inicialización).
            
É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.

