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)));
$$
;
Chame a UDF recursiva:
SELECT RECURSION_TEST('ABC');
+-----------------------+
| RECURSION_TEST('ABC') |
|-----------------------|
| A_B_C |
+-----------------------+
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;
}
$$;
Crie uma tabela com valores válidos e inválidos:
CREATE TABLE employees (ID INTEGER);
INSERT INTO employees (ID) VALUES
(1),
(-1);
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. |
+----+-------------------------------+