프로시저(Procedure)를 만들어 보겠습니다.
function을 만드는 것과 비슷한 방법으로 procedure를 만들 수 있습니다.
기본 형식은 아래와 같습니다.
delemiter를 일시적으로 '$$'로 변경해 줍니다. (SQL 구문은 ';'로 끝나는데 프로시저 안에서 한줄이 끝날때 마다 ';'를 넣어주면, SQL문과 프로시저 문의 구분이 애매해 지기 때문) 그리고 기존에 존재하는 procedure를 삭제하고(선택), 마지막으로 다시 procedure를 생성하는 문장을 넣어줍니다.
delimiter를 다시 ';'로 돌려 주는 것도 잊지 마세요. ^^
DELIMITER $$
DROP PROCEDURE IF EXISTS 디비명.프로시저이름$$
CREATE PROCEDURE 디비명.프로시저이름(IN 변수1 VARCHAR(255), OUT 변수2 DATE, INOUT 변수3 INT)
BEGIN
DECLARE result INT DEFAULT -1;
INSERT INTO 테이블(a,b,c) VALUES(1,2,3);
END $$
DELIMITER ;
프로시저의 변수로 넘겨주는 값 앞에 'IN', 'OUT', 'INOUT' 이라는 값이 붙어있는데, 이는 파라메터로 넘겨주는 값들의 종류를 나타내는 것입니다.
'IN'은 '읽기전용' 속성으로 프로시저 안에서 값을 변경할 수 없고, 'OUT'은 '값을 변경할 수 있는' 속성으로, 흔히 프로시저 내부에서 일을 처리한 뒤, 값을 돌려줄 때, 많이 사용됩니다. 마지막으로 'INOUT'은 'IN'과 'OUT'의 속성 모두를 가지고 있습니다.
사용법
call 디비명.프로시저이름(변수값, 변수값, 변수값
[출처] MySQL 프로시저(Procedure) 만들기|작성자 깡통
'IT노트 > MYSQL' 카테고리의 다른 글
[MySQL] DB 캐릭터셋 확인하기 (0) | 2015.02.19 |
---|---|
Hierarchical data in MySQL: parents and children in one query | EXPLAIN EXTENDED (0) | 2015.02.16 |
Incorrect string value 에러 : alter TABLE INC_ACT_INFO modify column ACT_CONTENT text character set utf8 collate utf8_general_ci; (0) | 2015.02.16 |
참고 DB 생성 (0) | 2015.02.14 |
Access denied for user 'root'@'localhost' (using password: YES) (0) | 2015.02.14 |