Erstellen von SQL-Skalarfunktionen

SQL-Skalarfunktionen werden beim Entwurf einer Datenbank oder bei der Entwicklung von Anwendungen erstellt. SQL-Skalarfunktionen sind nützlich, wenn die Kapselung einer wiederverwendbaren Logik einen erkennbaren Vorteil bietet. Diese Funktionen werden durch SQL-Anweisungen aufgerufen, die in Anwendungen und Datenbankobjekten verwendet werden.

Vorbereitende Schritte

Bevor Sie eine SQL-Funktion erstellen, führen Sie die folgenden Aufgaben aus:

Informationen zu dieser Task

Bevor Sie eine SQL-Skalarfunktion erstellen oder bei der Fehlerbehebung im Zusammenhang mit ihrer Verwendung sollten Sie die Einschränkungen für SQL-Funktionen kennen.

Prozedur

  1. Definieren Sie die Anweisung CREATE FUNCTION (skalar):
    1. Geben Sie einen Namen für die Funktion an.
    2. Geben Sie für jeden Eingabeparameter einen Namen und einen Datentyp an.
    3. Geben Sie das Schlüsselwort RETURNS und den Datentyp des skalaren Rückgabewerts an.
    4. Geben Sie das Schlüsselwort BEGIN an, um den Funktionskörper einzuleiten.
      Hinweis : Die Verwendung des Schlüsselworts BEGIN ATOMIC wird für neue Funktionen nicht empfohlen.
    5. Geben Sie den Funktionskörper an. Geben Sie die RETURN-Klausel und einen skalaren Rückgabewert oder eine Variable an.
    6. Geben Sie das Schlüsselwort END an.
  2. Führen Sie die Anweisung CREATE FUNCTION (skalar) über eine unterstützte Schnittstelle aus.

Ergebnisse

Die Anweisung CREATE FUNCTION (skalar) wird ausgeführt und die Skalarfunktion wird erstellt.

Beispiel

Beispiel 1
Ein Beispiel für eine kompilierte SQL-Funktion.
  CREATE FUNCTION GetPrice (Vendor CHAR(20), Pid INT)         
    RETURNS  DECIMAL(10,3) 
    LANGUAGE SQL  
    MODIFIES SQL
    BEGIN 
      DECLARE price DECIMAL(10,3); 

      IF Vendor = 'Vendor 1' 
        THEN SET price = (SELECT ProdPrice FROM V1Table WHERE Id = Pid); 
      ELSE IF Vendor = 'Vendor 2' 
        THEN SET price = (SELECT Price 
                          FROM V2Table 
    		 		 	  WHERE Pid = GetPrice.Pid); 
      END IF; 
  
    RETURN price; 
  END 

Diese Funktion nimmt zwei Eingabeparameter auf und gibt einen einzelnen Skalarwert zurück, der bedingt auf den Werten der Eingabeparameter basiert. Es erfordert die Deklaration und Verwendung einer lokalen Variablen mit dem Namen "price", die den zurückzugebenden Wert enthält, bis die Funktion zurückgegeben wird.

Beispiel 2
Ein Beispiel für eine kompilierte SQL-Funktionsdefinition, die einen Cursor, eine Bedingungsbehandlungsanweisung und eine REPEAT-Anweisung enthält.
  CREATE FUNCTION exit_func(a INTEGER)
    SPECIFIC exit_func
    LANGUAGE SQL
    RETURNS INTEGER
    BEGIN 
      DECLARE val INTEGER DEFAULT 0;

      DECLARE myint INTEGER DEFAULT 0;

      DECLARE cur2 CURSOR FOR
        SELECT c2 FROM udfd1 
          WHERE c1 <= a 
          ORDER BY c1;

      DECLARE EXIT HANDLER FOR NOT FOUND
        BEGIN
          SIGNAL SQLSTATE '70001' 
          SET MESSAGE_TEXT = 
            'Exit handler for not found fired';
        END;

    OPEN cur2;

    REPEAT
      FETCH cur2 INTO val;
      SET myint = myint + val;
    UNTIL (myint >= a) 
    END REPEAT;

    CLOSE cur2;

    RETURN myint;

  END@

Nächste Schritte

Führen Sie die Skalarfunktion aus, die Sie erstellt haben, um sie zu testen.