Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren und Trigger » Prozeduren, Trigger und Batches verwenden » Einführung in benutzerdefinierte Funktionen

 

Benutzerdefinierte Funktionen aufrufen

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.

Beispiel

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.

Hinweise

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.