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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren, Trigger, Batches und benutzerdefinierte Funktionen » Benutzerdefinierte Funktionen

 

Aufrufen einer benutzerdefinierten Funktion.

Eine benutzerdefinierte Funktion kann überall eingesetzt werden, wo eine integrierte Nicht-Aggregatfunktion verwendet werden kann.

Voraussetzungen

Sie müssen das EXECUTE-Privileg für die Funktion haben.

 Aufgabe
  1. Stellen Sie in Interactive SQL eine Verbindung mit der Datenbank her.

  2. Führen Sie mithilfe der benutzerdefinierten Funktion eine SELECT-Anweisung aus.

Ergebnisse

Die Funktion wird aufgerufen und ausgeführt.

Beispiel

  • Beispiele 1: Aufrufen einer benutzerdefinierten Funktion   Die folgende Funktion verkettet die Zeichenfolge 'Vorname' mit der Zeichenfolge 'Nachname'.
    CREATE FUNCTION fullname(
       firstname CHAR(30),
       lastname CHAR(30) )
    RETURNS CHAR(61)
    BEGIN
       DECLARE name CHAR(61);
       SET name = firstname || ' ' || lastname;
       RETURN (name);
    END;

    Führen Sie die folgende Anweisung in Interactive SQL aus, um aus zwei Spalten mit einem Vor- und Nachnamen einen vollständigen Namen zurückzugeben:

    SELECT FullName( GivenName, Surname ) 
     AS "Full Name"
     FROM Employees;
    Full Name
    Fran Whitney
    Matthew Cobb
    Philip Chin
    ...

    Führen Sie die folgende Anweisung in Interactive SQL aus, damit die benutzerdefinierte Funktion FullName aus einem übergebenen Vor- und Nachnamen einen vollständigen Namen zurückgibt:

    SELECT FullName('Jane', 'Smith') 
     AS "Full Name";
    Full Name
    Jane Smith

  • Beispiel 2: Lokale Deklarationen von Variablen   Die folgende benutzerdefinierte Funktion zeigt lokale Deklarationen von Variablen.

    Hinweis

    Die Funktion ist als Veranschaulichung gut geeignet, kann aber eine schlechte Performance aufweisen, wenn sie in einer SELECT-Anweisung mit zahlreichen Zeilen eingesetzt wird. Wenn Sie die Funktion beispielsweise in der SELECT-Liste einer Abfrage für eine Tabelle verwenden, die 100000 Zeilen enthält, von denen 10000 zurückgegeben werden, wird die Funktion 10000 Mal aufgerufen. Wenn Sie sie in der WHERE-Klausel derselben Abfrage verwenden, wird sie 100000 Mal aufgerufen.

    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 eine Variable namens "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 von "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';


 Siehe auch