MySQL 버전 : mysql-5.0.37
작성자 : 얼룩푸우(budget74@nate.com)
MySQL에서 Procedure를 만들어보자.
DELIMITER $$
CREATE PROCEDURE `owner`.`procedure_name` (IN|OUT|INOUT param_name TYPE )
BEGIN
처리문
END$$
DELIMITER ;
owner 은 'user name'
procedure_name 은 말 그대로 '프로시져 이름'
IN|OUT|INOUT 은 파라미터를 어떤 용도로 사용할 것인지 정의한다.
- IN 은 프로시져로 입력
- OUT 은 출력
- INOUT 은 입력하고 출력
param_name 은 파라미터 이름
TYPE 는 변수타입
ex)
아이디를 입력해서 회원의 이름을 가져오는 프로시져를 만들어 보자.
DELIMITER $$
CREATE PROCEDURE `tester`.`GET_USER_NAME` (IN userid VARCHAR(2), OUT userName VARCHAR(16) )
BEGIN
SELECT user_name INTO userName FROM member WHERE user_id = userid;
END$$
DELIMITER ;
이제 사용해 보자
>CALL GET_USER_NAME('budget74', @userName);
>SELECT @userName;
결과 '얼룩푸우'
Procedure 내에서는 참조자(@)는 쓰지 않는다. 그러나 OUT 변수로 사용할때는 사용해준다.
또한 처리문에 ';' 는 반드시 찍어야 한다. 안 그럼 에러난다.