반응형
Notice
Recent Posts
Recent Comments
Link
투케이2K
65. (MYSQL/SQL) 프로시저 (PROCEDURE) - 공지사항 전체 및 제한 개수 조회 수행 본문
반응형
[개발 환경 설정]
개발 툴 : Heidi
개발 언어 : Mysql
![](https://blog.kakaocdn.net/dn/bCZDGC/btrE1YwlWAy/hf9NsnhkQ3gBLXuoAkKkC0/img.png)
[소스 코드]
/**************************************************************/
-- [DELIMITER : 프로시저 앞,뒤의 위치하여 안에 있는 부분은 한번에 실행]
DELIMITER $$
/**************************************************************/
DROP PROCEDURE IF EXISTS PRO_SEL_NOTICE; -- [이미 생성된 프로시저가 있으면 DROP]
CREATE PROCEDURE PRO_SEL_NOTICE -- [프로시저 생성]
(
IN I_TYPE VARCHAR(100) CHARACTER SET UTF8, -- [인풋 : 필수 : 1=전체 조회 / 2=제한 조회]
IN I_LIMIT VARCHAR(20) CHARACTER SET UTF8, -- [인풋 : 조회 제한 개수 : 5]
OUT O_MSG VARCHAR(1000) CHARACTER SET UTF8 -- [리턴 : 메시지]
)
/**************************************************************/
/**************************************************************/
PROC_BODY : BEGIN
/**************************************************************/
/***************************************************************
[프로시저 설명]
[설 명] : 공지사항 전체 조회, 제한 조회 프로시저
[프로시저 호출] : [전체 조회]
CALL PRO_SEL_NOTICE(
'1', -- [필수 : I_TYPE]
'',
@O_MSG
);
SELECT @O_MSG;
[프로시저 호출] : [제한 조회]
CALL PRO_SEL_NOTICE(
'2', -- [필수 : I_TYPE]
'3',
@O_MSG
);
SELECT @O_MSG;
[프로시저 리턴] : MSG , 테이블
[프로시저 삭제] :
DROP PROCEDURE PRO_SEL_NOTICE;
[프로시저 생성 목록 확인] :
SHOW PROCEDURE STATUS;
***************************************************************/
/***************************************************************
[로직 정리 : M_DEBUG]
[1] : 현재 날짜 및 시간 데이터 변수에 지정 실시
[2] : 공통 인풋 데이터 널 체크 수행 실시
[3] : 인풋 값으로 들어온 타입에 맞게 전체 조회, 제한 조회 분기 처리 실시
***************************************************************/
-- [전역 변수 선언]
DECLARE M_DEBUG VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [디버깅 단계]
DECLARE M_DATE VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [현재 날짜 및 시간]
DECLARE M_LIMIT_COUNT INTEGER DEFAULT 0; -- [UMCS_NOTICE 테이블에서 개수 제한 출력 실시]
-- [SQL 수행 EXCEPTION 처리]
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
-- [롤백 처리 실시]
ROLLBACK;
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : EXCEPTION : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT *
FROM UMCS_NOTICE
LIMIT 0;
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_TYPE IS NULL OR TRIM(I_TYPE) = '' OR LENGTH(I_TYPE) = 0 THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : Type Data Is Null : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT *
FROM UMCS_NOTICE
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [3] : 인풋 값으로 들어온 타입에 맞게 전체 조회, 제한 조회 분기 처리 실시
IF TRIM(I_TYPE) = '1' THEN -- [조회]
SET M_DEBUG = '3-1'; -- [디버깅 단계]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('Y : 전체 조회 완료 : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환 : UMCS_NOTICE 테이블에 저장된 전체 데이터 조회 실시]
SELECT *
FROM UMCS_NOTICE
ORDER BY CAST(NOTICE_REDT AS INTEGER) DESC;
-- [프로시저 종료]
LEAVE PROC_BODY;
-- ============================================
ELSEIF TRIM(I_TYPE) = '2' THEN -- [등록]
SET M_DEBUG = '3-2-1'; -- [디버깅 단계]
-- [등록에 필요한 필수 인풋 값 널 체크 실시]
IF I_TYPE IS NULL OR TRIM(I_TYPE) = '' OR LENGTH(I_TYPE) = 0 -- [타입]
OR I_LIMIT IS NULL OR TRIM(I_LIMIT) = '' OR LENGTH(I_LIMIT) = 0 -- [제한 개수]
THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 제한 개수 조회에 필요한 데이터를 다시 확인해주세요. (Input Data Is Null) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT *
FROM UMCS_NOTICE
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [실제로 UMCS_MVER 테이블에 등록 수행 실시]
SET M_DEBUG = '3-2-2'; -- [디버깅 단계]
-- [데이터 형 변환 수행 실시]
SET M_LIMIT_COUNT = CAST(I_LIMIT AS INTEGER);
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('Y : 제한 개수 조회를 완료했습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT *
FROM UMCS_NOTICE
ORDER BY CAST(NOTICE_REDT AS INTEGER) DESC
LIMIT M_LIMIT_COUNT;
-- [프로시저 종료]
LEAVE PROC_BODY;
-- ============================================
ELSE
SET M_DEBUG = '3-3'; -- [디버깅 단계]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 정의되지 않은 타입 입니다. : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT *
FROM UMCS_NOTICE
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
/**************************************************************/
END$$;
DELIMITER ;
/**************************************************************/
[결과 출력]
![](https://blog.kakaocdn.net/dn/beIcIu/btrE2zwjUym/qHhqkWoScmWJVQcWjsF2LK/img.png)
![](https://blog.kakaocdn.net/dn/UQOD0/btrE3qMpCFk/0HiD94AmDzWmgYLxEuPKh1/img.png)
반응형
'MySqlDB' 카테고리의 다른 글
67. (MYSQL/SQL) 프로시저 (PROCEDURE) - 디바이스 고유값 등록 전체 조회 및 개별 조회 실시 (0) | 2022.06.20 |
---|---|
66. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 업데이트 여부 판단 수행 실시 (0) | 2022.06.19 |
64. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 앱 버전 조회, 등록, 수정, 삭제 수행 (0) | 2022.06.16 |
63. (MYSQL/SQL) 프로시저 (PROCEDURE) - 사용자 디바이스 단말 고유 값 초기화 실시 (0) | 2022.06.16 |
62. (MYSQL/SQL) 프로시저 (PROCEDURE) - 사용자 로그인 수행 및 로그인 이력 관리 실시 (0) | 2022.06.16 |
Comments