프로시저를 만드는 실습을 처음으로 해보았습니다. 원래는 지난 포스트에서 작성한 쿼리를 베이스로 프로시저를 만들어 보려 했으나, 로그인 프로시저를 먼저 만들어 보기로 했습니다.
이 테이블은 아래 포스트에 설명하였습니다.
도리안의 개발 이야기 #183 - 주말에 샘플 DB 테이블 추가
| 파라메터 이름 | 데이터 타입 | In/Out | 설명 |
|---|---|---|---|
| userId | VARCHAR(30) | In | 로그인할 사용자 아이디 |
| userPw | VARCHAR(30) | In | 로그인할 사용자 아이디의 비밀번호 |
| resultCode | INT | Out | 로그인 결과 코드 |
DROP PROCEDURE IF EXISTS signIn;
DELIMITER $$
CREATE PROCEDURE signIn(IN userId VARCHAR(32), IN userPw VARCHAR(32), OUT resultCode INT)
BEGIN
-- resultCode 아웃 파라메터에 설정할 값들
DECLARE RESULTCODE_SIGNIN_SUCCESS INT DEFAULT 0;
DECLARE RESULTCODE_NO_USERID INT DEFAULT -1;
DECLARE RESULTCODE_NO_USERPW_MATCH INT DEFAULT -2;
DECLARE userIdCount INT;
DECLARE userIdPwMatchCount INT;
-- 사용자 ID 있는지 카운트
SELECT COUNT(*)
INTO userIdCount
FROM SmpUser
WHERE (SmpUser.userId = userId);
-- 사용자 ID, 패스워드가 일치하는지 카운트
SELECT COUNT(*)
INTO userIdPwMatchCount
FROM SmpUser
WHERE (SmpUser.userId = userId) AND (SmpUser.userPw = userPw);
-- resultCode 아웃 파라메터 설정
IF (userIdCount = 0) THEN
SET resultCode = RESULTCODE_NO_USERID;
ELSEIF (userIdPwMatchCount = 0) THEN
SET resultCode = RESULTCODE_NO_USERPW_MATCH;
ELSE
SET resultCode = 0;
END IF;
END $$
DELIMITER ;
다음 포스트에서는 사용자 추가, 수정, 삭제하는 저장 프로시저(stored procedure)들을 작성할 예정입니다.