SeSac (2021-08 ~ 2021-12)/MySQL

MySQL 10 - Stored Function & Procedure

배워도끝이없네 2021. 8. 30. 16:08

Stored Function : 펑션에 값을 주면 로직에따린 결과를 리턴해주는것

CREATE FUNCTION <function-name>(<argument-name> <argument -type>)  
	RETURNS <argument-Type> 
BEGIN
	RETURN <return-data>
END

view는 v_ trigger 는 tr , function은 f_로 이름을 많이 시작한다.

return은 괄호를 써서 리턴을해야한다. (우선순위를 주는것)

 

procedure는 stored procedure라고 관례적으로 sp_를 이름에 많이 준다.

DROP Procedure IF EXISTS sp_;
DELIMITER $$
CREATE Procedure <procedure-name>([IN | OUT | INOUT] <param> <type>, ...)
BEGIN
	...
    ...
END $$
DELIMITER ;

 

- in : 입력받는 파라미터 (무조건 써야함)

- out : 내가 내보낼 파라미터 

SELECT 선택할 컬럼 into out할 변수 를 해야 out을 할 수 있다.

procedure는 out을 잘 쓰지 않는다. 리턴을 처리해야 하는것은 function에서 주로 하고 procedure는 프로그램을 실행하는데 의미가 있다.

 

Procedure를 쓰는이유

1) 보안

2) 성능(프로시져가 컴파일되어서 메모리에 등록이 되니까 컴파일 할 필요가 없어서 빠르다)

3) 유지보수 (깃에 올려서 관리해야한다)

4) Modulization

5) Procedural Batch job (절차적인 배치잡을 할 때 편하다. 예를들어서 실시간이 아닌 지난 통계 등등)

 

Variables

declare <변수이름> <type> [default] 로 변수를 선언할 수 있다.

set <var name-> = <value>;

SELECT <col> INTO <var-name> from ...

 

이외에도 IF, Case, 등이 있다..