스토어드 함수
2022. 4. 20. 00:09ㆍDB/Mysql-기초
스토어드 함수의 개요
스토어드 함수의 형식
DELIBITER $$
CREATE FUNCTION 스토어드 함수이름( 파라미터 )
RETURNS 반환형식
BEGIN
프로그래밍 코딩...
RETURN 반환값;
END $$
DELIMITER ;
SELECT 스토어드_함수이름();
스토어드 함수와 스토어드 프로시저의 차이
-스토어드 프로시저의 파라미터와 달리 IN, OUT등을 사용할 수 없다. 스토어드 함수의 파라
미터는 모두 입력 파라미터로 사용된다.
-스토어드 함수는 RETURNS문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서는
RETURN문으로 하나의 값을 반환해야 한다. 스토어드 프로시저는 별도의 반환하는 구문이 없
으며, 꼭 필요하다면 여러개의 OUT 파라미터를 사용해서 값을 반환할 수 있다.
-스토어드 프로시저는 CALL로 호출하지만, 스토어드 함수는 SELECT 문장 안에서 호출된다.
-스토어드 프로시저 안에는 SELECT문을 사용할 수 있지만, 스토어드 함수안에서는 집합 결과
를 반환하는 SELECT문을 사용할 수 없다.
*SELECT ~ INTO는 집합결과를 반환하는 값이 아니므로, 예외적으로 스토어드 함수에 사용할 수 있다.
-스토어드 프로시저는 여러 SQL문이나 숫자 계산 등의 다양한 용도로 사용되지만, 스토어드 함수
는 어떤 게산을 통해서 하나의 값을 반환하는데 주로 사용된다.
스토어드 함수를 사용하기 위해서는 먼저 다음 쿼리문으로 스토어드 함수 생성 권한을 허용해줘야 한다.
SET GLOBAL log_bin_trust_function_creators = 1;
실습1.
DELIMITER $$
CREATE FUNCTION userfunc(value1 INT, value2 INT)
RETURNS INT
BEGIN
RETURN value1 + value2;
END $$
DELIMITER ;
SELECT userfunc(100, 200);
실습2.
DELIMETER $$
CREATE FUNCTION getAgeFunc(bYear INT)
RETURNS INT
BEGIN
DECLARE age INT;
SET age = YEAR(CURDATE()) - bYear;
RETURN age;
END $$
DELIMITER ;
SELECT getAgeFunc(1979);