Eine benutzerdefinierte Funktion kann mit den entsprechenden Berechtigungen überall eingesetzt werden, wo eine integrierte Nicht-Aggregatfunktion verwendet werden kann.
Die folgende Anweisung in Interactive SQL gibt einen vollständigen Namen zurück, der sich aus den Eingaben in den Spalten für den Vornamen und den Nachnamen zusammensetzt:
SELECT FullName(GivenName, Surname) AS "Full Name" FROM Employees; |
Full Name |
---|
Fran Whitney |
Matthew Cobb |
Philip Chin |
... |
Die folgende Anweisung in Interactive SQL gibt einen vollständigen Namen zurück, der sich aus einem angegebenen Vor- und Nachnamen zusammensetzt:
SELECT FullName('Jane', 'Smith') AS "Full Name"; |
Full Name |
---|
Jane Smith |
Jeder Benutzer, dem EXECUTE-Berechtigungen für die Funktion erteilt wurden, kann die Funktion "FullName" verwenden.
Die folgende benutzerdefinierte Funktion zeigt lokale Deklarationen von Variablen.
Die Customers-Tabelle umfasst Kunden aus Kanada und den USA. Die benutzerdefinierte Funktion "Nationality" bildet einen dreistelligen Ländercode, der auf der Spalte "Country" basiert.
CREATE FUNCTION Nationality( CustomerID INT ) RETURNS CHAR( 3 ) BEGIN DECLARE nation_string CHAR(3); DECLARE nation country_t; SELECT DISTINCT Country INTO nation FROM Customers WHERE ID = CustomerID; IF nation = 'Canada' THEN SET nation_string = 'CDN'; ELSE IF nation = 'USA' OR nation = ' ' THEN SET nation_string = 'USA'; ELSE SET nation_string = 'OTH'; END IF; END IF; RETURN ( nation_string ); END; |
Dieses Beispiel deklariert die Variable "nation_string", in der die Zeichenfolge für die Staatszugehörigkeit enthalten sein soll, benutzt eine SET-Anweisung, um einen Wert für die Variable zu setzen, und gibt den Wert der Zeichenfolge "nation_string" an die aufrufende Anweisung zurück.
Die folgende Abfrage listet alle kanadischen Kunden in der Tabelle "Customers" auf:
SELECT * FROM Customers WHERE Nationality(ID) = 'CDN'; |
Die Deklaration eines Cursors und einer Ausnahmebedingung wird in späteren Abschnitten beschrieben.
Die Funktion ist als Veranschaulichung gut geeignet, kann aber schlechte Performance aufweisen, wenn sie in einer SELECT-Anweisung mit zahlreichen Zeilen eingesetzt wird. Beispiel: Wenn Sie die Funktion in der SELECT-Liste einer Abfrage für eine Tabelle verwenden, die 100.000 Zeilen enthält, von denen 10.000 zurückgegeben werden, wird die Funktion 10.000 Mal aufgerufen. Wenn Sie sie in der WHERE-Klausel derselben Abfrage verwenden, wird sie 100.000 Mal aufgerufen.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |