Skalare JavaScript-UDFs

Unter diesem Thema werden skalare JavaScript-UDFs (benutzerdefinierte Funktion) behandelt.

Unter diesem Thema:

Einführung

Eine skalare JavaScript-UDF gibt für jede Eingabezeile eine Ausgabezeile zurück. Die Ausgabezeile darf nur eine Spalte/einen Wert enthalten.

Ein grundlegendes Beispiel finden Sie unter Einführung in JavaScript-UDFs. Weitere Beispiele sind weiter unten zu finden.

Bemerkung

Skalare Funktionen (UDFs) haben einen Grenzwert von 500 Eingabeargumenten.

Beispiele

Dieser Abschnitt enthält Beispiele für skalare JavaScript-UDFs.

Rekursion

Im folgenden Beispiel wird zeigt, dass sich eine JavaScript-UDF selbst aufrufen kann (d. h. sie kann eine Rekursion verwenden):

Erstellen Sie eine rekursive UDF:

CREATE OR REPLACE FUNCTION RECURSION_TEST (STR VARCHAR)
  RETURNS VARCHAR
  LANGUAGE JAVASCRIPT
  AS $$
  return (STR.length <= 1 ? STR : STR.substring(0,1) + '_' + RECURSION_TEST(STR.substring(1)));
  $$
  ;
Copy

Rufen Sie die rekursive UDF auf:

SELECT RECURSION_TEST('ABC');
+-----------------------+
| RECURSION_TEST('ABC') |
|-----------------------|
| A_B_C                 |
+-----------------------+
Copy

Kundenspezifische Ausnahme

Das folgende Beispiel zeigt eine JavaScript-UDF, die eine kundenspezifische Ausnahme auslöst:

Erstellen Sie die Funktion:

CREATE FUNCTION validate_ID(ID FLOAT)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS $$
    try {
        if (ID < 0) {
            throw "ID cannot be negative!";
        } else {
            return "ID validated.";
        }
    } catch (err) {
        return "Error: " + err;
    }
$$;
Copy

Erstellen Sie eine Tabelle mit gültigen und ungültigen Werten:

CREATE TABLE employees (ID INTEGER);
INSERT INTO employees (ID) VALUES 
    (1),
    (-1);
Copy

Rufen Sie die Funktion auf:

SELECT ID, validate_ID(ID) FROM employees ORDER BY ID;
+----+-------------------------------+
| ID | VALIDATE_ID(ID)               |
|----+-------------------------------|
| -1 | Error: ID cannot be negative! |
|  1 | ID validated.                 |
+----+-------------------------------+
Copy

Problembehandlung

Siehe Problembehandlung bei JavaScript-UDFs.