DB

스토어드 함수

sdafdq 2023. 11. 15. 11:16

스토어드 프로시저와 비슷하지만 차이가 있다.

 

스토어드 프로시저는 여러 SQL문이나 숫자 계산 등의 다양한 용도로 사용하지만, 스토어드 함수는 어떤 계산을 통해서, return을 통해 하나의 값을 반환하는데 주로 사용한다.

 

스토어드 프로시저는 call로 사용했지만 이거는 select로 사용한다. 마치 sql 내장 함수인 듯 하다.

 

delimiter $$
create function sumFunc(num1 int, num2 int)
	returns int
begin
	return num1 + num2;
end $$
delimiter ;

delimiter $$
create function 함수명(인자1 타입, 인자2 타입)
	returns 반환타입
begin
	return 반환값;
end $$
delimiter ;

이런 식으로 정의 한다.

 

select sumFunc(100, 200);
select 함수명(인자값1, 인자값2);

호출은 이렇게.

 

프로시저는 뭐 안에 select 문도 쓰고 그랬는데 이건 아닌가 보다.

 

 

 

drop function if exists calcYearFunc;
delimiter $$
create function calcYearFunc(dYear int)
	returns int
begin
	declare runYear int; -- 활동기간
    set runYear = year(curdate()) - dYear;
    return runYear;
end $$
delimiter ;

select calcYearFunc(2023) into @activeYear;
select @activeYear;

select calcYearFunc(year(m.debut_date)) from member m;

이런 식으로. 저렇게 하면 각 행마다 실행되서 테이블로 만들어 줌.

저렇게 변수에 넣어줄 수도 있고

 

하긴 crud 기본이 그거긴 함.

r의 기본이 select ~ 한거 한행씩 다 해서 테이블로 만드는.

 

 

'DB' 카테고리의 다른 글

트리거  (0) 2023.11.15
커서  (0) 2023.11.15
스토어드 프로시저2  (0) 2023.11.14
인덱스  (0) 2023.11.10
뷰 가상테이블  (0) 2023.11.09