스토어드 함수

2022. 4. 20. 00:09DB/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);

'DB > Mysql-기초' 카테고리의 다른 글

스토어드 프로시저  (0) 2022.04.19
Mysql-DML  (0) 2022.03.23
Mysql-DDL  (0) 2022.03.23