delimiter $$
CREATE FUNCTION id_generator() -- ํ๋ผ๋ฏธํฐ๊ฐ ์์ผ๋ฏ๋ก ๊ดํธ์์ ๊ณต๋ฐฑ
RETURNS int -- RETURNS + ๋ฐํ ํ์
NO SQL -- MySQL์์ stored function์ ์ ์ํ ๋ ์ฌ์ฉ๋๋ ํน์ ์ง์ ์
BEGIN
RETURN (1000000000 + floor(rand() * 1000000000)); -- rand() : 0 ~ 1 ์ฌ์ด์ ์ ์, floor() : ๋ด๋ฆผ
END
$$
delimiter;delimiter ๋โ
function๋ด๋ถ์์ ์ ์ํ ๋ ์ธ๋ฏธ์ฝ๋ก (;)์ ์ฌ์ฉํ ๊ฑด๋ฐ
delimiter๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ด๋ถ์ ์๋ ์ธ๋ฏธ์ฝ๋ก (;)์ ๋ง๋ฌ์๋ function์ด ๋๋ฌ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์, delimiter๋ก ;๋ฅผ $$๋ก ๋ฐ๊ฟ์ฃผ๊ณ function์ ์์ฑํ ํ ๋ค์ delimiter๋ก $$๋ฅผ ;๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค.
-- ๋ณ์ ์ ์ธํ๋ ๋ฐฉ๋ฒ
delimiter $$
CREATE FUNCTION dept_avg_salary(d_id int) -- (ํ๋ผ๋ฏธํฐ๋ช
ํ์
)
RETURNS int
READS SQL DATA
BEGIN
DECLARE avg_sal int; -- DECLARE : ๋ณ์ ์ ์ธ
select avg(salary) into avg_sal
from employee
where dept_id = d_id;
RETURN avg_sal;
END
$$
delimiter ;
-- ๋ณ์ ์ ์ธ ์์ด ์์ฑ ๋ฐฉ๋ฒ : @ ์ฌ์ฉํ๊ธฐ
delimiter $$
CREATE FUNCTION dept_avg_salary(d_id int)
RETURNS int
READS SQL DATA
BEGIN
select avg(salary) into @avg_sal
from employee
where dept_id = d_id;
RETURN @avg_sal;
END
$$
delimiter ;
-- ๋ถ์ ์ ๋ณด์ ๋ถ์ ํ๊ท ์ฐ๋ด
SELECT *, dept_avg_salary(id)
FROM department;delimiter $$
CREATE FUNCTION toeic_pass_fail(toeic_score int)
RETURNS char(4)
NO SQL
BEGIN
DECLARE pass_fail char(4);
IF toeic_score is null THEN SET pass_fail = 'fail';
ELSEIF toeic_score < 800 THEN SET pass_fail = 'fail';
ELSE SET pass_fail = 'pass';
END IF;
RETURN pass_fail;
END
$$
delimiter ;
-- ๋ณ์ ์ ์ธ ์์ด ์์ฑ ๋ฐฉ๋ฒ : @ ์ฌ์ฉํ๊ธฐ
delimiter $$
CREATE FUNCTION toeic_pass_fail(toeic_score int)
RETURNS char(4)
NO SQL
BEGIN
IF toeic_score is null THEN SET @pass_fail = 'fail';
ELSEIF toeic_score < 800 THEN SET @pass_fail = 'fail';
ELSE SET @pass_fail = 'pass';
END IF;
RETURN @pass_fail;
END
$$
delimiter ;
SELECT *, toeic_pass_fail(toeic)
FROM student;DROP FUNCTION stored_function_name;
ํด๋น DB์ function์ด๋ฆ์ ์๊ณ ์ถ์๋
SHOW FUNCTION STATUS where DB = 'company';
โ๏ธfunction์ ๋ง๋ค ๋, DB๋ฅผ ๋ช ์ํ์ง ์์๋๋ฐ ์ง์ ๋์ด ์๋ ์ด์ ๋โ function์ ๋ง๋ค ๋ ํ์ฑํ๋ DB๋ก ์ง์ ๋๋ค.
function์ ๋ง๋ค ๋ DB๋ฅผ ๋ช ์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
CREATE FUNCTION DB์ด๋ฆ.function์ด๋ฆ
DB์ ์ด๋ฆ์ ์๊ณ ์ถ์๋
SHOW DATABASES;
ํด๋น function์ ๋ํด ๊ถ๊ธํ ๋
SHOW CREATE FUNCTION function์ด๋ฆ;
ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ์ ์ฃผ๋ก 3๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ค๋ฅธ๋ค.