[PostgreSQL] ํจ์
PostgreSQL๋ ๋ค๋ฅธ RDB๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ์, ๋ค๋ฅธ ๋ง๋ก ํ๋ก์์ ๋ผ ํ๋ ์ฌ์ฌ์ฉ ๋จ์๋ฅผ ๋ง๋ค๊ณ ๊ฐ๋ค์ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ํจ์ ๊ตฌ๋ฌธ ๋ด์์๋ ์ผ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์๊ฐ ์๋ค. ๋ฐ๋ณต๋ฌธ์ด๋ ๋ณ์๋ ๊ทธ๋ฐ๊ฑฐ ๋ง์ด๋ค. ์ด๋ฐ๊ฑธ PL/SQL์ด๋ผ ๋ถ๋ฅธ๋ค.
ํจ์์ ์ฅ์ ์ผ๋ก๋
- ํธ๋ฆฌํ ์ฌ์ฌ์ฉ๊ณผ ์ผ๊ด์ ์ธ ๊ด๋ฆฌ
- ์ฟผ๋ฆฌ ํด์ ์๊ฐ(๊ณํ์๊ฐ) ์ ์ฝ
- ์์ ๋ก์ด ํํ์ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ.
๋ฑ์ด ์๊ณ .
๋จ์ ์ ๋ง์์ง๋ฉด ๋ง์์ง์๋ก ๊ด๋ฆฌ๋น์ฉ์ด ์์ฃผ ์ปค์ง๋ค๋ ์ ์ด ์๋ค.
๊ทธ๋ฅ ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ง ๋ณด๊ณ ์ดํดํ ์ ์์ง๋ง, ํจ์๊ฐ ์์ธ ์ฟผ๋ฆฌ๋ ๊ทธ ํจ์๋ค๊น์ง๋ ๋ค ํ๊ณ ๋ค์ด๊ฐ๋ฉด์ ์ดํด๋ฅผ ํด์ผ ํ๋ค. ํจ์๊ฐ ์์ญ ์๋ฐฑ๊ฐ๊ฐ ๋๋ ๊ฒฝ์ฐ์ ๊ฐํ์ด ๋ฒ์ด์ง๋ค.
๊ทธ๋์ ํจ์, ํ๋ก์์ ์ ์ฌ์ฉ์ ์ฝ๊ฐ ์ง์๋๋ ์ถ์ธ๋ค.
๊ทธ๋๋ ์ ๋นํ ์ ์ฐ๋ฉด ์ข๋ค.
ํจ์์ ์์ฑ
์์ฑ์ create function ํค์๋๋ฅผ ์ฌ์ฉํด ์ํํ ์ ์๋ค.
๊ทธ ๋ค์๋ ์ด๋ฆ๊ณผ (๋งค๊ฐ๋ณ์), ๋ฆฌํดํ์
.. ๋ฑ๋ฑ์ด ๋ค์ด๊ฐ๋ค.
๋ง์ฝ ์ซ์ 2๊ฐ๋ฅผ ๋ํ๋ ํจ์๋ฅผ ๋ง๋ ๋ค๋ฉด ์ด๋ ๊ฒ ๋ง๋ค ์ ์๋ค.

CREATE FUNCTION MY_ADD(lhs int8, rhs int8)
RETURNS int8
AS
$$
BEGIN
RETURN lhs + rhs;
END;
$$
LANGUAGE PLPGSQL;
์์ ๋ ์ค์. int8 ํ์
์ ๋งค๊ฐ๋ณ์ lhs, rhs๋ฅผ ๋ฐ๊ณ . int8 ํ์
์ ๋ฐํํ๋ค๋ ๋ป์ด๊ณ
begin๊ณผ end ์ฌ์ด๊ฐ ์ค์ง์ ์ธ ์คํ๊ตฌ๋ฌธ์ด๋ค.
return์ผ๋ก ๊ฐ์ ๋ํด์ ๋ฐํํ๋ค.
๊ทธ๋ผ ๊ธฐ๋ณธํจ์๋ค์ฒ๋ผ ๋ด๊ฐ ๋ง๋ ํจ์๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ ์ ์๋ค.

์ญ์
์ญ์ ๋ ๊ทธ๋ฅ DROP FUNCTIONํ๋ฉด ๋๋ค.

์ต๋ช ์ฝ๋ ์คํ
์กฐ๊ธ์ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ง๋ง. ํจ์์์ ์ฌ์ฉ๋๋ ์ฝ๋์์ญ $$๋ง ๋ถ๋ฆฌํด์, ํจ์ ์ ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์๋ ์๋ค.
๊ตณ์ด ์ด๋ ๊ฒ ์ธ์ผ์ ๋ณ๋ก ์๋ ๊ฒ ๊ฐ์๋ฐ
๊ฐ์ ๋ฐํํ์ง ๋ชปํ๊ณ , ๊ณํ์๊ฐ ๋จ์ถ๋ ํ์ง ๋ชปํ๋ค๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
์ฐธ์กฐ
https://www.postgresql.org/docs/13/plpgsql.html
http://www.gisdeveloper.co.kr/?p=4546