UDFs de JavaScript escalares

Este tópico cobre UDFs (funções definidas pelo usuário) de JavaScript escalares.

Neste tópico:

Introdução

Uma UDF de JavaScript escalar retorna uma linha de saída para cada linha de entrada. A linha de saída deve conter apenas uma coluna/valor.

Um exemplo básico está em Introdução a UDFs de JavaScript. Você encontra exemplos adicionais abaixo.

Nota

Funções escalares (UDFs) têm um limite de 500 argumentos de entrada.

Exemplos

Esta seção contém exemplos de UDFs de JavaScript escalares.

Recursão

O exemplo a seguir mostra que uma UDF de JavaScript pode chamar a si própria (ou seja, pode usar recursão).

Crie uma UDF recursiva:

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

Chame a UDF recursiva:

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

Exceção personalizada

O exemplo a seguir mostra uma UDF de JavaScript que gera uma exceção personalizada.

Crie a função:

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

Crie uma tabela com valores válidos e inválidos:

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

Chame a função:

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

Solução de problemas

Consulte Solução de problemas em UDFs de JavaScript.