UDFs JavaScript scalaires¶
Cette chapitre traite des UDFs JavaScript scalaires (fonctions définies par l’utilisateur).
Dans ce chapitre :
Introduction¶
Une UDF JavaScript renvoie une ligne de sortie pour chaque ligne d’entrée. La ligne de sortie ne doit contenir qu’une seule colonne/valeur.
Un exemple de base se trouve dans Présentation des UDFs JavaScript. D’autres exemples sont présentés ci-dessous.
Note
Les fonctions scalaires (UDFs) ont une limite de 500 arguments d’entrée.
Exemples¶
Cette section contient des exemples d” UDFs JavaScript scalaires.
Récursivité¶
Cet exemple montre qu’une UDF JavaScript peut s’appeler elle-même (c’est-à-dire qu’elle peut utiliser la récursivité).
Créez un UDF récursif :
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)));
$$
;
Appelez l’UDF récursif :
SELECT RECURSION_TEST('ABC');
+-----------------------+
| RECURSION_TEST('ABC') |
|-----------------------|
| A_B_C |
+-----------------------+
Exception personnalisée¶
Cet exemple montre une UDF JavaScript qui lève une exception personnalisée.
Créez la fonction :
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;
}
$$;
Créez une table avec des valeurs valides et non valides :
CREATE TABLE employees (ID INTEGER);
INSERT INTO employees (ID) VALUES
(1),
(-1);
Appelez la fonction :
SELECT ID, validate_ID(ID) FROM employees ORDER BY ID;
+----+-------------------------------+
| ID | VALIDATE_ID(ID) |
|----+-------------------------------|
| -1 | Error: ID cannot be negative! |
| 1 | ID validated. |
+----+-------------------------------+