스칼라 JavaScript UDFs

이 항목에서는 스칼라 JavaScript UDF(사용자 정의 함수)를 다룹니다.

이 항목의 내용:

소개

스칼라 JavaScript UDF는 각 입력 행에 대해 하나의 출력 행을 반환합니다. 출력 행에는 하나의 열/값만 포함되어야 합니다.

기본 예는 JavaScript UDF 소개 에 있습니다. 추가 예는 아래와 같습니다.

참고

스칼라 함수(UDF)의 입력 인자는 500개로 제한됩니다.

이 섹션에는 스칼라 JavaScript UDF의 예가 포함되어 있습니다.

재귀

다음 예는 JavaScript UDF가 자신을 호출할 수 있음을 보여줍니다(즉, 재귀를 사용할 수 있음).

다음과 같이 재귀 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

다음과 같이 재귀 UDF를 호출하십시오.

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

사용자 지정 예외

다음 예는 사용자 지정 예외를 발생시키는 JavaScript UDF를 보여줍니다.

다음과 같이 함수를 만드십시오.

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

유효한 값과 유효하지 않은 값으로 다음과 같이 테이블을 만드십시오.

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

다음과 같이 함수를 호출하십시오.

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

문제 해결

JavaScript UDF 문제 해결 섹션을 참조하십시오.