SMALL

프로시저란

여러 개의 query를 마치 하나의 함수처럼 실행하기 위한 query의 집합이다.

만들어 두기만 하면 함수처럼 호출하여 편하게 사용할 수 있다.

여기서 프로시저를 "함수처럼"이라고 표현하였는데 

함수와는 다르다

 

프로시저 함수

함수(Function)

리턴 값이 필수로 하나만 존재해야 한다.

클라이언트에서 수행된다.

주로 간단한 계산, 수치 등 결과를 나타낼 때 주로 사용된다.

 

프로시저(Procedure)

리턴 값에 대한 제약이 없다. ( 있을 수도, 없을 수도 여러 개 존재할 수도)

서버에서 실행된다. (클라이언트에서 수행되는 것보다는 속도가 빠르다)

 

프로시저 정의(생성)

DELIMITER $$
CREATE PROCEDURE 'DESC_PROC' (
    -- 파라미터 선언
    NAME VARCHAR(20),
    AGE INT
)
BEGIN
    -- 변수 선언
    DECLARE VAL_NUM INTEGER;
    
    -- 쿼리문
    SELECT COUNT(*) + 1
    	INTO VAL_NUM
        FROM desc_table;
        
    -- 쿼리문
    INSERT INTO desc_table(total_count, uname, uage) VALUES(VAL_NUM, NAME, AGE);
END $$
DELIMITER ;

CREATE PROCEDURE를 통해 선언 

BEGIN - END 사이에 SQL문 및 변수 선언

DELIMITER는 프로시저 내부의 SQL문에 세미콜론이 존재하여

프로시저가 끝나지 않았는데 끝난 것으로 인식할 수 있는 부분을 방지하기 위해 선언

 

프로시저 호출

CALL DESC_PROC('Jun', 33);

 

프로시저 목록 확인

SHOW PROCEDURE STATUS \G --서버에 어떤 저장 프로시저가 있는지 확인

 

SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES 
  WHERE ROUTINE_TYPE='PROCEDURE'; -- INFORMATION_SCHEMA 확인

 

SHOW CREATE PROCEDURE Reset_animal_count \G --저장 프로시저가 수행하는 작업을 확인

조회하고자 하는 프로시저의 명을 입력 ( 예시 프로시저명 : Reset_animal_count )

 

프로시저 제거 

DROP PROCEDURE Reset_animal_count();

 

etc..

sql tool을 이용하는 경우에는 아래와 같은 편의 기능도 제공한다.

 

tool을 이용해 생성된 프로시저 틀 

 

참고내역 :  

https://mariadb.com/kb/ko/stored-procedure-overview/#%EC%A0%80%EC%9E%A5-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80-%EA%B6%8C%ED%95%9C

 

Stored Procedure Overview

A Stored Procedure is a routine invoked with a CALL statement.

mariadb.com

 

LIST

+ Recent posts