MySQL DB 실습 #3 - 로그인 프로시저 만들어 보기

Words
151
Reading
1 min
Listen
Play
7y

대문 제작: imrahelk

프로시저를 만드는 실습을 처음으로 해보았습니다. 원래는 지난 포스트에서 작성한 쿼리를 베이스로 프로시저를 만들어 보려 했으나, 로그인 프로시저를 먼저 만들어 보기로 했습니다.

SmpUser 테이블

이 테이블은 아래 포스트에 설명하였습니다.

도리안의 개발 이야기 #183 - 주말에 샘플 DB 테이블 추가

로그인 프로시저의 파라메터

파라메터 이름데이터 타입In/Out설명
userIdVARCHAR(30)In로그인할 사용자 아이디
userPwVARCHAR(30)In로그인할 사용자 아이디의 비밀번호
resultCodeINTOut로그인 결과 코드

로그인 결과 코드

  • 0: 로그인 성공
  • -1: 사용자 ID 없음
  • -2: 사용자 ID 있으나 비밀번호 불일치

로그인 프로시저 알고리즘

  1. 사용자 ID가 있는지 확인한다.
  2. 사용자 ID, 패스워드가 일치하는지 확인한다.
  3. 사용자 ID가 없으면, resultCode 아웃 파라메터를 -1로 설정한다.
  4. 사용자 ID가 있으나 비밀번호가 일치하지 않으면, resultCode 아웃 파라메터를 -2로 설정한다.
  5. 사용자 ID, 비밀번호가 모두 일치하면, resultCode 아웃 파라메터를 0으로 설정한다.

로그인 프로시저 코드

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)들을 작성할 예정입니다.

aaronhong_banner.jpg

MySQL DB 실습 #3 - 로그인 프로시저 만들어 보기 | Ecency