스토어드 함수
사용자가 직접 만들어서 사용하는 함수를 스토어드 함수라고 한다.
개요
DELIMITER $$
CREATE FUNCTION NAME (PARAMETER)
RETURNS 반환값;
BEGIN
이 부분에 프로그래밍 코딩 ;
RETURN 반환값;
END $$
DELIMITER;
SELECT NAME();
- 스토어드 함수는 프로시저와 달리 IN OUT 을 사용할수 없다.
- 스토어드 함수의 파라미터는 모두 입력 파라미터로 사용된다.
- 스토어드 함수는 RETURNS문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서는 RETURN 문으로 하나의 값을 반환 해야 한다. 스토어드 프로시저는 별도의 반환하는 구문이 없고 OUT 파라미터를 이용해서 값을 반환 할 수 있다.
- 스토어드 프로시저는 CALL 로 호출하지만 스토어드 함수는 SELECT 문장 안에서 호출된다.
- 스토어드 프로시저 안에는 SELECT 문을 사용할 수 있지만 , 스토어드 함수 안에서는
집합 결과를 반환하는 SELECT 를 사용할 수 없다.
SELECT - INTO 는 집합 결과를 반환 하는 것이 아니므로 예외적으로 스토어드 함수에서
사용할 수 있다.
- 스토어드 프로시저는 여러 SQL문이나 숫자 계산 등의 다양한 용도로 사용되지만 스토어드 함수는 어떤 계산을 통해서 하나의 값을 반환 하는데 주로 사용된다.
drop function if EXISTS userFunc;
DELIMITER $$
CREATE FUNCTION userFunc(VALUE1 INT, VALUE2 INT)
RETURNS INT
BEGIN
RETURN VALUE1+VALUE2;
END $$
DELIMITER ;
SELECT userFunc(100,200);
-- SELECT AGE
drop function if EXISTS AGE;
DELIMITER $$
CREATE FUNCTION AGE(VALUE1 INT)
RETURNS INT
BEGIN
DECLARE age INT;
SET age = YEAR(curdate())- VALUE1;
RETURN age;
END $$
DELIMITER ;
SELECT AGE(1988);
-- HUAL YONG
SELECT AGE(1988) INTO @AGE1988;
SELECT AGE(1990) INTO @AGE1990;
SELECT concat('1988-1990===>',(@AGE1988-@AGE1990));
--
'데이터 베이스 > MySQL' 카테고리의 다른 글
MYSQL 커서&CURSOR 예제&문제 16 (3) | 2016.12.20 |
---|---|
MYSQL 뷰&VIEW 예제&문제 15 (4) | 2016.12.19 |
MYSQL procedure&프로시저 예제&문제 13 (2) | 2016.12.16 |
MYSQL IF ELSE &CASE&동적sql 예제&문제 12 (4) | 2016.12.15 |
MYSQL join&inner join & outer join 예제&문제 11 (1) | 2016.12.14 |
댓글