Notice
Recent Posts
Recent Comments
Link
투케이2K
73. (MYSQL/SQL) 프로시저 (PROCEDURE) - BLOB 이미지 테이블에 등록된 사용자 사진 조회 실시 본문
[개발 환경 설정]
개발 툴 : Heidi
개발 언어 : Mysql
[소스 코드]
/**************************************************************/
-- [DELIMITER : 프로시저 앞,뒤의 위치하여 안에 있는 부분은 한번에 실행]
DELIMITER $$
/**************************************************************/
DROP PROCEDURE IF EXISTS PRO_SEL_PHTO; -- [이미 생성된 프로시저가 있으면 DROP]
CREATE PROCEDURE PRO_SEL_PHTO -- [프로시저 생성]
(
IN I_IDNO VARCHAR(100) CHARACTER SET UTF8, -- [인풋 : 필수 : 사용자 학번]
OUT O_MSG VARCHAR(1000) CHARACTER SET UTF8 -- [리턴 : 메시지]
)
/**************************************************************/
/**************************************************************/
PROC_BODY : BEGIN
/**************************************************************/
/***************************************************************
[프로시저 설명]
[설 명] : 사용자 BLOB 사진 이미지 조회 실시
[프로시저 호출]
CALL PRO_SEL_PHTO(
'1', -- [필수 : I_IDNO]
@O_MSG
);
SELECT @O_MSG;
[프로시저 리턴] : MSG , 테이블
[프로시저 삭제] :
DROP PROCEDURE PRO_SEL_PHTO;
[프로시저 생성 목록 확인] :
SHOW PROCEDURE STATUS;
***************************************************************/
/***************************************************************
[로직 정리 : M_DEBUG]
[1] : 현재 날짜 및 시간 데이터 변수에 지정 실시
[2] : 공통 인풋 데이터 널 체크 수행 실시
[3] : 학적에 등록된 사용자인지 판단 실시 (UMCS_MAST)
[4] : BLOB 테이블에 사용자가 등록되어있는지 확인 실시
[5] : 사용자 사진 정보 리턴 수행 실시
***************************************************************/
-- [전역 변수 선언]
DECLARE M_DEBUG VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [디버깅 단계]
DECLARE M_DATE VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [현재 날짜 및 시간]
DECLARE M_USER_COUNT INTEGER DEFAULT 0; -- [UMCS_MAST 테이블에서 사용자가 등록되어있는지 확인 실시]
-- [SQL 수행 EXCEPTION 처리]
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
-- [롤백 처리 실시]
ROLLBACK;
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : EXCEPTION : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT T_BLOB
FROM TEST_BLOB
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_IDNO IS NULL OR TRIM(I_IDNO) = '' OR LENGTH(I_IDNO) = 0 THEN
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : Input Data Is Null : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT T_BLOB
FROM TEST_BLOB
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [3] : 학적에 등록된 사용자인지 판단 실시 (UMCS_MAST)
SET M_DEBUG = '3'; -- [디버깅 단계]
SET M_USER_COUNT = (
SELECT COUNT(*)
FROM UMCS_MAST
WHERE TRIM(MAST_IDNO) = TRIM(I_IDNO)
);
IF M_USER_COUNT != 1 THEN -- [학적에 등록된 사용자가 아니거나 , 같은 학번이 다중인 경우]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 학적에 등록된 사용자를 다시 확인해주세요. (UserCount / ', CAST(M_USER_COUNT AS CHAR) ,') : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT T_BLOB
FROM TEST_BLOB
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [4] : BLOB 테이블에 사용자가 등록되어있는지 확인 실시
SET M_DEBUG = '4'; -- [디버깅 단계]
SET M_USER_COUNT = (
SELECT COUNT(*)
FROM TEST_BLOB
WHERE TRIM(T_IDX) = TRIM(I_IDNO)
);
IF M_USER_COUNT != 1 THEN -- [학적에 등록된 사용자가 아니거나 , 같은 학번이 다중인 경우]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('N : 이미지 테이블에 등록된 사용자를 다시 확인해주세요. (UserCount / ', CAST(M_USER_COUNT AS CHAR) ,') : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT T_BLOB
FROM TEST_BLOB
LIMIT 0;
-- [프로시저 종료]
LEAVE PROC_BODY;
END IF;
-- [5] : 사용자 사진 정보 리턴 수행 실시
SET M_DEBUG = '5'; -- [디버깅 단계]
-- [리턴 데이터 삽입]
SET O_MSG = CONCAT('Y : 사용자 이미지 조회를 완료했습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');
-- [리턴 테이블 반환]
SELECT T_BLOB
FROM TEST_BLOB
WHERE TRIM(T_IDX) = TRIM(I_IDNO)
LIMIT 1;
-- [프로시저 종료]
LEAVE PROC_BODY;
/**************************************************************/
END$$;
DELIMITER ;
/**************************************************************/
[결과 출력]
반응형
'MySqlDB' 카테고리의 다른 글
75. (MYSQL/SQL) BIT_LENGTH 사용해 문자열 bit 비트 길이 확인 실시 (0) | 2022.06.26 |
---|---|
74. (MYSQL/SQL) 프로시저 (PROCEDURE) 구문 내에서 IF ELSEIF ELSE 조건문 사용 실시 (0) | 2022.06.26 |
72. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 분실 및 도난 조회, 등록, 해제 수행 실시 (0) | 2022.06.22 |
71. (MYSQL/SQL) 프로시저 (PROCEDURE) - 모바일 분실 및 도난 등록 수행 프로시저 (0) | 2022.06.21 |
70. (MYSQL/SQL) CAST , DATE_FORMAT 사용해 문자열 날짜 및 시간 데이터 DATE 타입으로 포맷 수행 실시 (0) | 2022.06.20 |
Comments