프로시저(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 디비명.프로시저이름(변수값, 변수값, 변수값

 


Posted by wychoi
,