์Šค์นผ๋ผ 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 ๋ฌธ์ œ ํ•ด๊ฒฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.