[MariaDB] 프로시저
1) 프로시저 생성
DELIMITER //
▷DELIMITER : SQL 문의 종료 기호 변경 명령어
CREATE PROCEDURE procedure_name(
IN 변수1 datatype,
IN 변수2 datatype,
…
▷ 매개변수 정의
)
BEGIN
SQL 문;
SQL 문;
…
▷ 실행시킬 DML 명령어 기입
END //
※ BEGIN과 END 사이가 본문으로 프로시저의 실제 작업이 포함됩니다.
단, 명령어가 하나인 경우 BEGIN, END를 사용하지 않아도 됩니다.
DELIMITER ;
ex)
(a) user_info 테이블에 INSERT 작업 수행 프로시저 생성
DELIMITER //
CREATE PROCEDURE insert_user(
IN name_value VARCHAR(20),
IN team_id_value INT,
IN email_value VARCHAR(50),
IN age_value INT
)
BEGIN
INSERT INTO user_info (name, team_id, email, age)
VALUES (name_value, team_id_value, email_value, age_value);
END //
DELIMITER ;
(b) team_info 테이블에 INSERT 작업 수행 프로시저 생성
DELIMITER //
CREATE PROCEDURE insert_team(
IN name_value VARCHAR(50)
)
BEGIN
INSERT INTO team_info (name) VALUES (name_value);
END //
DELIMITER ;
2) 프로시저 사용
CALL procedure_name(...);
ex)
(a) team_info 테이블에 값 추가
CALL insert_team('RED');
CALL insert_team('BLUE');
CALL insert_team('YELLOW');
CALL insert_team('GREEN');
(b) user_info 테이블에 값 추가
CALL insert_user('yjyoo', 1, 'yjyoo@pnpsecure.com', 24);
CALL insert_user('jhpark', 1, 'jhpark@pnpsecure.com', 39);
CALL insert_user('slkim', 4, 'slkim@pnpsecure.com', 26);
CALL insert_user('jhkim', 4, 'jhkim@pnpsecure.com', 32);
CALL insert_user('sbcho', 4, 'sbcho@pnpsecure.com', 29);
CALL insert_user('jhjeon', 2, 'jhjeon@pnpsecure.com', 27);
CALL insert_user('jjlee', 2, 'jjlee@pnpsecure.com', 30);
CALL insert_user('dyhan', 3, 'dyhan@pnpsecure.com', 30);
CALL insert_user('jkjeng', 3, 'jkjeng@pnpsecure.com', 25);
3) 특정 프로시저 정의 확인
SHOW CREATE PROCEDURE procedure_name;
※ 프로시저는 수정할 수 없습니다.
※ 프로시저 이름은 변경할 수 없습니다.
4) 프로시저 삭제
DROP PROCEDURE procedure_name;
DROP PROCEDURE IF EXISTS procedure_name;
▷ IF EXISTS : 존재한다면 삭제
※ IF EXISTS 옵션은 데이터베이스, 테이블, 트리거, 뷰 등에도 사용 가능합니다.