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)));
  $$
  ;
Copy

Appelez l’UDF rĂ©cursif :

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

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;
    }
$$;
Copy

CrĂ©ez une table avec des valeurs valides et non valides :

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

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.                 |
+----+-------------------------------+
Copy

Résolution des problÚmes¶

Voir DĂ©pannage d’UDFs JavaScript.