612 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
return 1;
}
enum Item_result *arg_type
Die Typen f ¨ur jedes Argument. Die m¨oglichen Typenwerte sind
STRING_RESULT, INT_RESULT und REAL_RESULT.
Um sicherzustellen, dass die Argumente vom angegebenen Typ sind und einen
Fehler zur¨uckgeben, falls nicht, pr¨ufen Sie das arg_type-Array in der Initial-
isierungsfunktion. Beispiel:
if (args->arg_type[0] != STRING_RESULT ||
args->arg_type[1] != INT_RESULT)
{
strcpy(message,"XXX() erfordert eine Zeichenkette und eine Ganzzahl");
return 1;
}
Als Alternative dazu, dass Ihre Funktionsargumente von bestimmten Typen
sein m¨ussen, k¨onnen Sie die Initialisierungsfunktion benutzen, um die arg_
type-Elemente auf die Typen zu setzen, die Sie wollen. Das veranlasst MySQL,
die Typen der Argumente bei jedem Aufruf von xxx() zu erzwingen. Um
beispielsweise zu erzwingen, dass die ersten zwei Argumente Zeichenkette und
Ganzzahl sind, geben Sie in xxx_init() folgendes ein:
args->arg_type[0] = STRING_RESULT;
args->arg_type[1] = INT_RESULT;
char **args
args->args kommuniziert der Initialisierungsfunktion Informationen ¨uber die
allgemeine Natur der Argumente, mit der Ihre Funktion aufgerufen wurde.
Bei einem Konstanten-Argument i zeigt args->args[i] auf den Argumen-
twert. (Siehe unten wegen Anleitungen, wie auf diesen Wert korrekt zugegrif-
fen wird.) Bei einem Nicht-Konstanten-Argument ist args->args[i] 0. Ein
Konstanten-Argument ist ein Ausdruck, der nur Konstanten wie 3 oder 4*7-2
oder SIN(3.14) benutzt. Ein Nicht-Konstanten-Argument ist ein Ausdruck,
der auf Werte verweist, die sich von Zeile zu Zeile ¨andern k¨onnen, wie Spal-
tennamen oder Funktionen, die mit Nicht-Konstanten-Argumenten aufgerufen
werden.
Bei jedem Aufruf der Hauptfunktion enth¨alt args->args die tats¨achlichen Ar-
gumente, die f¨ur die Zeile ¨ubergeben werden, die momentan verarbeitet wird.
Funktionen k¨onnen auf ein Argument i wie folgt verweisen:
• Ein Argument des Typs STRING_RESULT wird als ein Zeichenkettenzeiger
plus einer L¨ange angegeben, um die Handhabung von Bin¨ardaten oder
Daten beliebiger L¨ange zu erlaub en. Die Zeichenketten-Inhalte sind
als args->args[i] und die Zeichenkettenl¨ange als args->lengths[i]
verf¨ugbar. Sie sollten nicht davon ausgehen, dass Zeichenketten
null-terminiert sind.
• Bei einem Argument des Typs INT_RESULT m¨ussen Sie args->args[i] zu
einem long long-Wert machen (cast):
Comentarios a estos manuales