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을 이용해 생성된 프로시저 틀
참고내역 :
LIST