PostgreSQL ์ ๊ฝค ์ค๋ ์จ์์ง๋ง ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํด ๋ณธ์ ์ ์ฒ์์ธ ๊ฒ ๊ฐ๋ค.
PostgreSQL ์์ ํจ์๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
CREATE [OR REPLACE] FUNCTION function_name ([parameter1 data_type [, parameter2 data_type, ...]])
[RETURNS return_type]
[LANGUAGE language_name]
AS $$ -- Function body goes here $$;CREATE ๋์ CREATE OR REPLACE๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ๊ฐ์ ์ด๋ฆ์ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ ๋์ฒด๋๋ค.
Warning
CREATE OR REPLACE ์ฌ์ฉ ์ ๊ธฐ์กด ํจ์๊ฐ ์๋ค๋ฉด ๋ฎ์ด์์์ง๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค.
์ซ์ 2๊ฐ๋ฅผ ๋ฐ์ ํฉ์ ๋ฐํํ๋ ๊ฐ๋จํ ํจ์
CREATE FUNCTION add(a integer, b integer) RETURNS integer
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT
RETURN a + b;CREATE OR REPLACE FUNCTION calculate_sum(a integer, b integer)
RETURNS integer
AS
$$
BEGIN
RETURN a + b;
END;
$$ LANGUAGE plpgsql;๊ฐ๋จํ ํจ์๋ ๋๋ถ๋ถ ์ด๋ฏธ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ ํจ์๋ฅผ ๋ง๋ค ์๋ ์๋ค.
๋ฌธ์์ด์ ๋ฐ์ ์ ์ธ์ํค๊ณ ์ถ์ ๋ฌธ์์ด๋ค์ ์ ์ธ์ํค๋ ํจ์
CREATE FUNCTION exclude_words(name text, excluded_words text[])
RETURNS text
AS $$
DECLARE
result text;
word_to_exclude text;
BEGIN
result := name;
FOREACH word_to_exclude IN ARRAY excluded_words
LOOP
result := regexp_replace(result, word_to_exclude, '', 'gi');
END LOOP;
RETURN result;
END;
$$ LANGUAGE plpgsql;