TurboSQL Guide CREATE AGGREGATE Statement |
Top Previous Next |
Dieses Feature ist nur in TurboDB Managed verfügbar. Syntax CREATE AGGREAGATE aggregate_name([:parameter_name data_type]...) RETURNS data_type AS EXTERNAL NAME [namespace_name.class_name],assembly_name Beschreibung namespace_name.class_name bezeichnet eine öffentliche (public) Klasse der Assembly. Diese Klasse muss über einen Default Konstruktor verfügen und drei Methoden implementieren: [C#] data_type muss mit den Paramentern einer TurboSQL Funktion übereinstimmen (siehe "Parameter mit .NET Assemblies austauschen"). Wenn ein benutzerdefiniertes Aggregat in einem SQL Statement verwendet wird, z.B: SELECT MAX2(Salary) FROM Employees, erzeugt die Engine eine Instanz der CLR Aggregat Klasse. Zu Beginn jeder Gruppe wird die Init Methode aufgerufen. Danach erfolgt für jeden Datensatz der Gruppe der Aufruf von Accumulate in der in der GROUP BY Klausel definierten Reihenfolge. Nachdem alle Datensätze der Gruppe akkumuliert sind, führt die Engine die Funktion Terminate aus, um das Ergebnis abzurufen. Jede angeforderte Ressource kann in Terminate freigegeben werden. Beispiel Der C# Code für ein Aggregat zur Berechnung des Maximums zweiter Ordnung sieht so aus: namespace MathRoutines { Und so wird das Aggregat in TurboSQL importiert: CREATE AGGREGATE Max2(:x DOUBLE) RETURNS DOUBLE AS
|