1. 프로시저란
MySQL에서 함수를 정의하는 것이라고 보시면 편합니다, 함수처럼 매개변수를 받고 그에 따라 다른 결과를 나타내는 것이 가능합니다, 프로시저는 SQL 명령의 묶음이라고 볼 수 있고 프로시저로 묶인 SQL문 질의들은 처리될 때 하나의 쿼리로 해석되어 처리합니다.
즉 프로시저는 복수의 쿼리를 실행하는데 있어서 중간 쿼리들의 오류를 방지하기 위해 일괄 처리하는 명령어입니다.
부연 설명으로 프로시저는 MySQL에서 절차적인 처리를 위해 만든 Storead Procedure에 포함되는 기능입니다.
Storead Procedure 에서는 DB에서 사용할 수 없던 제어문이 사용이 가능합니다, 이에 포함되는 것은 프로시저 말고도 함수, 트리거 등이 있습니다.
특징
- 하나의 쿼리로 해석하여 처리하기에 데이터 처리 속도가 빠르다
- 한 번의 요청으로 여러 SQL문을 실행시킬 수 있다, 그로 인해 외부 PC의 DB 일 경우 네트워크 부하를 줄일 수 있음
- MySQL은 아직 Storead Procedure 의 성능이 타 프로그램에 비해 부족합니다.(프로시저도 마찬가지)
- 프로시저 기능을 통해 코드의 조각화를 할 수 있습니다, java나 php에서 하던 일을 MySQL에서 처리하는 것입니다.
2. 프로시저 등록
기본적인 형태는 아래와 같습니다.
DELIMITER //
CREATE PROCEDURE mem()
BEGIN
select * from members;
END
//
DELIMITER ;
"DELIMITER //" 을 선언해서 기존 구분 문자인 ";" 에서 "//"로 바꿔줍니다.
아래 형식으로 프로시저를 등록할 수 있습니다.
CREATE PROCEDURE 프로시저명(매개변수)
BEGIN
SQL 문1;
SQL 문2;
END
프로시저 등록을 마친 후
"DELIMITER ;"을 통해 다시 구분 무자를 ";"으로 바꿔줍니다.
이 작업을 하지 않을 경우 프로시저 등록하는 과정에서 ;으로 인해 에러가 발생합니다.
프로시저 사용법과 삭제법은 아래와 같습니다.
call mem;
DROP PROCEDURE mem;
위에서 프로시저을 생성할 때 매개변수가 있었는데요.
아래와 같이 매개변수를 사용할 수 있습니다.
매개변수를 사용하려면 call에서 매개변수를 보내면 되겠죠.
DELIMITER //
CREATE PROCEDURE mem(a INT)
BEGIN
SELECT * FROM members WHERE ID = a;
END //
DELIMITER ;
CALL mem(2);
마지막으로 아래 명령문으로 만들어진 프로시저의 내용을 확인할 수 있습니다.
'MySQL' 카테고리의 다른 글
[MySQL] 실행 계획(Query Plan)이 뭔데 (0) | 2023.12.02 |
---|---|
[MySQL] 뷰(View) 사용법 (0) | 2020.12.30 |
[MySQL] 함수(Function) 사용법 (0) | 2020.12.29 |
[MySQL] 트랜잭션(Transaction) 사용법 (0) | 2020.12.29 |
[MySQL] 트리거(Trigger) 사용법 (0) | 2020.12.29 |