Notice
Recent Posts
Recent Comments
Link
투케이2K
66. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 업데이트 여부 판단 수행 실시 본문
[개발 환경 설정]
개발 툴 : Heidi
개발 언어 : Mysql
[소스 코드]
/**************************************************************/
-- [DELIMITER : 프로시저 앞,뒤의 위치하여 안에 있는 부분은 한번에 실행]
DELIMITER $$
/**************************************************************/
DROP PROCEDURE IF EXISTS PRO_CHK_MVER; -- [이미 생성된 프로시저가 있으면 DROP]
CREATE PROCEDURE PRO_CHK_MVER -- [프로시저 생성]
(
IN I_PLAT VARCHAR(100) CHARACTER SET UTF8, -- [인풋 : 필수 : 디바이스 플랫폼 : ios , android]
IN I_CODE VARCHAR(100) CHARACTER SET UTF8, -- [인풋 : 필수 : 디바이스 모바일 버전 코드 : 1]
IN I_VER VARCHAR(50) CHARACTER SET UTF8, -- [인풋 : 필수 : 디바이스 모바일 버전 명칭 : 1.0.1]
OUT O_MSG VARCHAR(1000) CHARACTER SET UTF8 -- [리턴 : 메시지 : Y [사용자 모바일 현재 최신 버전] : S [강제 업데이트] : R [일반 업데이트] : N [에러 메시지]]
)
/**************************************************************/
/**************************************************************/
PROC_BODY : BEGIN
/**************************************************************/
/***************************************************************
[프로시저 설명]
[설 명] : 사용자 모바일 버전 확인 및 일반, 강제 업데이트 여부 판단 실시
[프로시저 호출] :
CALL PRO_CHK_MVER('android', '1', '1.0.1', @O_MSG);
SELECT @O_MSG;
[프로시저 리턴] : MSG : Y [사용자 모바일 현재 최신 버전] : S [강제 업데이트] : R [일반 업데이트] : N [에러 메시지]
[프로시저 삭제] :
DROP PROCEDURE PRO_CHK_MVER;
[프로시저 생성 목록 확인] :
SHOW PROCEDURE STATUS;
***************************************************************/
/***************************************************************
[로직 정리 : M_DEBUG]
[1] : 현재 날짜 및 시간 데이터 변수에 지정 실시
[2] : 인풋 데이터 널 체크 수행 실시
[3] : [UMCS_MVER 테이블에 등록된 개별 업데이트 사항 카운트 실시]
[4] : 인풋 값으로 들어온 값과 UMCS_MVER 테이블에 등록된 버전 비교 수행 실시
[5] : 일반 및 강제 업데이트 판단 실시
***************************************************************/
-- [전역 변수 선언]
DECLARE M_DEBUG VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [디버깅 단계]
DECLARE M_DATE VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [현재 날짜 및 시간]
DECLARE M_VER_COUNT INTEGER DEFAULT 0; -- [UMCS_MVER 테이블에서 등록된 모바일 업데이트 사항이 있는지 카운트 실시]
DECLARE M_FLAG VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [일반 및 강제 업데이트 구분 값]
DECLARE M_CODE VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [모바일 MAX 버전 코드]
DECLARE M_MSG VARCHAR(500) CHARACTER SET UTF8 DEFAULT ''; -- [업데이트 내용 표시]
-- [SQL 수행 EXCEPTION 처리]
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
-- [롤백 처리 실시]
ROLLBACK;
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : EXCEPTION : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
END;
-- [1] : 현재 날짜 및 시간 데이터 변수에 지정 실시
SET M_DEBUG = '1'; -- [디버깅 단계]
SET M_DATE = (
SELECT CAST(DATE_FORMAT(sysdate(), '%Y%m%d%H%i%s') AS CHAR)
);
-- [2] : 인풋 데이터 널 체크 수행 실시
SET M_DEBUG = '2'; -- [디버깅 단계]
IF I_PLAT IS NULL OR TRIM(I_PLAT) = '' OR LENGTH(I_PLAT) = 0
OR I_CODE IS NULL OR TRIM(I_CODE) = '' OR LENGTH(I_CODE) = 0
OR I_VER IS NULL OR TRIM(I_VER) = '' OR LENGTH(I_VER) = 0
THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : Input Data Is Null : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [3] : [UMCS_MVER 테이블에 등록된 개별 업데이트 사항 카운트 실시]
SET M_DEBUG = '3'; -- [디버깅 단계]
SET M_VER_COUNT = (
SELECT COUNT(*)
FROM UMCS_MVER
WHERE TRIM(MVER_PLAT) = TRIM(I_PLAT)
);
IF M_VER_COUNT = 0 THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 테이블에 등록된 모바일 업데이트 사항이 없습니다. (M_VER_COUNT / ', CAST(M_VER_COUNT AS CHAR) ,') : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [4] : 인풋 값으로 들어온 값과 UMCS_MVER 테이블에 등록된 버전 비교 수행 실시
SET M_DEBUG = '4'; -- [디버깅 단계]
SELECT MVER_FLAG, MVER_CODE, MVER_MSG INTO M_FLAG, M_CODE, M_MSG
FROM UMCS_MVER
WHERE TRIM(MVER_PLAT) = TRIM(I_PLAT)
ORDER BY CAST(MVER_REDT AS INTEGER) DESC
LIMIT 1;
-- [5] : 일반 및 강제 업데이트 판단 실시
IF M_FLAG IS NULL OR TRIM(M_FLAG) = '' OR LENGTH(M_FLAG) = 0
OR M_CODE IS NULL OR TRIM(M_CODE) = '' OR LENGTH(M_CODE) = 0
OR M_MSG IS NULL OR TRIM(M_MSG) = '' OR LENGTH(M_MSG) = 0
THEN
SET M_DEBUG = '5-1'; -- [디버깅 단계]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 데이터 조회중 문제가 발생했습니다. (Data Is Null) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
-- ============================================
ELSE
IF TRIM(M_FLAG) = '1' THEN -- [일반 업데이트]
SET M_DEBUG = '5-2-1'; -- [디버깅 단계]
-- [인풋으로 들어온 코드와 현재 등록된 코드 비교 실시]
IF CAST(M_CODE AS INTEGER ) > CAST(I_CODE AS INTEGER ) THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('R : [일반] ', CAST(M_MSG AS CHAR) ,' : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('Y : [일반] 현재 최신 모바일 버전입니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
-- ============================================
ELSEIF TRIM(M_FLAG) = '2' THEN -- [강제 업데이트]
SET M_DEBUG = '5-2-2'; -- [디버깅 단계]
-- [인풋으로 들어온 코드와 현재 등록된 코드 비교 실시]
IF CAST(M_CODE AS INTEGER ) > CAST(I_CODE AS INTEGER ) THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('S : [필수] ', CAST(M_MSG AS CHAR) ,' : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('Y : [필수] 현재 최신 모바일 버전입니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
-- ============================================
ELSE -- [정의 되지 않은 타입]
SET M_DEBUG = '5-2-3'; -- [디버깅 단계]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 정의 되지 않은 업데이트 타입입니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
END IF;
/**************************************************************/
END$$;
DELIMITER ;
/**************************************************************/
[결과 출력]
반응형
'MySqlDB' 카테고리의 다른 글
68. (MYSQL/SQL) 프로시저 (PROCEDURE) - 관리자 조회 , 등록 , 수정 , 삭제 실시 (0) | 2022.06.20 |
---|---|
67. (MYSQL/SQL) 프로시저 (PROCEDURE) - 디바이스 고유값 등록 전체 조회 및 개별 조회 실시 (0) | 2022.06.20 |
65. (MYSQL/SQL) 프로시저 (PROCEDURE) - 공지사항 전체 및 제한 개수 조회 수행 (0) | 2022.06.17 |
64. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 앱 버전 조회, 등록, 수정, 삭제 수행 (0) | 2022.06.16 |
63. (MYSQL/SQL) 프로시저 (PROCEDURE) - 사용자 디바이스 단말 고유 값 초기화 실시 (0) | 2022.06.16 |
Comments