์ค์นผ๋ผ 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)));
$$
;
๋ค์๊ณผ ๊ฐ์ด ์ฌ๊ท UDF๋ฅผ ํธ์ถํ์ญ์์ค.
SELECT RECURSION_TEST('ABC');
+-----------------------+
| RECURSION_TEST('ABC') |
|-----------------------|
| A_B_C |
+-----------------------+
์ฌ์ฉ์ ์ง์ ์์ธยถ
๋ค์ ์๋ ์ฌ์ฉ์ ์ง์ ์์ธ๋ฅผ ๋ฐ์์ํค๋ 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;
}
$$;
์ ํจํ ๊ฐ๊ณผ ์ ํจํ์ง ์์ ๊ฐ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ํ ์ด๋ธ์ ๋ง๋์ญ์์ค.
CREATE TABLE employees (ID INTEGER);
INSERT INTO employees (ID) VALUES
(1),
(-1);
๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ํธ์ถํ์ญ์์ค.
SELECT ID, validate_ID(ID) FROM employees ORDER BY ID;
+----+-------------------------------+
| ID | VALIDATE_ID(ID) |
|----+-------------------------------|
| -1 | Error: ID cannot be negative! |
| 1 | ID validated. |
+----+-------------------------------+
๋ฌธ์ ํด๊ฒฐํ๊ธฐยถ
JavaScript UDF ๋ฌธ์ ํด๊ฒฐ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.