투케이2K

80. (TWOK/UTIL) [Mysql/DB] 프로시저 (PROCEDURE) - input , out (select msg , select cursor) 본문

투케이2K 유틸파일

80. (TWOK/UTIL) [Mysql/DB] 프로시저 (PROCEDURE) - input , out (select msg , select cursor)

투케이2K 2022. 10. 18. 16:56

[설 명]

프로그램 : Mysql / DB

설 명 : 프로시저 (PROCEDURE) - input , out (select msg , select cursor)

 

[소스 코드]

 

/**************************************************************/
-- [DELIMITER : 프로시저 앞,뒤의 위치하여 안에 있는 부분은  한번에 실행]
DELIMITER $$
/**************************************************************/
DROP PROCEDURE IF EXISTS PRO_ALL_MVER; -- [이미 생성된 프로시저가 있으면 DROP]
CREATE PROCEDURE PRO_ALL_MVER -- [프로시저 생성]
(
    IN I_TYPE    VARCHAR(100) CHARACTER SET UTF8,    -- [인풋 : 필수 : 1=조회 / 2=등록 / 3=수정 / 4=삭제]
    IN I_REDT    VARCHAR(20) CHARACTER SET UTF8,     -- [인풋 : 일자 : 20220613]
    IN I_NAME    VARCHAR(50) CHARACTER SET UTF8,     -- [인풋 : 앱 명칭 : 모바일 학생증]
    IN I_PLAT    VARCHAR(100) CHARACTER SET UTF8,    -- [인풋 : 플랫폼 : android / ios]
    IN I_CODE    VARCHAR(100) CHARACTER SET UTF8,    -- [인풋 : 앱 버전 코드 : 1 (정수)]
    IN I_VONM    VARCHAR(100) CHARACTER SET UTF8,    -- [인풋 : 앱 버전 명칭 : 1.0.1]
    IN I_MEMO    VARCHAR(500) CHARACTER SET UTF8,    -- [인풋 : 작업 내용 : 안정화 작업 수행]
    IN I_FLAG    VARCHAR(5) CHARACTER SET UTF8,      -- [인풋 : 일반 및 강제 업데이트 여부 : 1=일반 / 2=강제]
    IN I_WKNM    VARCHAR(50) CHARACTER SET UTF8,     -- [인풋 : 등록 작업자 : admin]
    IN I_MSG     VARCHAR(300) CHARACTER SET UTF8     -- [인풋 : 업데이트 메시지 : 앱이 업데이트 되었습니다. 마켓에서 다운받아주세요]
)
/**************************************************************/


/**************************************************************/
PROC_BODY : BEGIN
/**************************************************************/


/***************************************************************
[프로시저 설명]


[설 명] : 앱 버전 조회, 등록, 수정, 삭제 수행 프로시저





[프로시저 호출] : [조회]

CALL PRO_ALL_MVER(
  '1', -- [필수 : I_TYPE]
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  '',
  ''
);





[프로시저 호출] : [등록]

CALL PRO_ALL_MVER(
  '2',         -- [필수 : I_TYPE]
  '20220613',  -- [필수 : I_REDT]
  '학생증',     -- [필수 : I_NAME]
  'android',   -- [필수 : I_PLAT]
  '1',         -- [필수 : I_CODE]
  '1.0.1',     -- [필수 : I_VONM]
  '안정화 작업',
  '1',         -- [필수 : I_FLAG]
  'admin',     -- [필수 : I_WKNM]
  '앱이 업데이트 되었습니다. 마켓에서 다운받아주세요' -- [필수 : I_MSG]
);





[프로시저 호출] : [수정]

CALL PRO_ALL_MVER(
  '3',           -- [필수 : I_TYPE]
  '20220613',    -- [수정 불가 : 조건 매핑에 사용 : I_REDT]
  '학생증',       -- [수정 불가 : 조건 매핑에 사용 : I_NAME]
  'android',     -- [수정 불가 : 조건 매핑에 사용 : I_PLAT]
  '1',
  '1.0.1',
  '수정 작업',
  '2',
  'admin',
  '앱이 수정 되었습니다. 마켓에서 다운받아주세요'
);





[프로시저 호출] : [삭제]

CALL PRO_ALL_MVER(
  '4',           -- [필수 : I_TYPE]
  '20220613',    -- [필수 : I_REDT]
  '학생증',       -- [필수 : I_NAME]
  'android',     -- [필수 : I_PLAT]
  '1',           -- [필수 : I_CODE]
  '1.0.1',       -- [필수 : I_VONM]
  '',
  '',
  '',
  ''
);





[프로시저 리턴] : MSG , 테이블





[프로시저 삭제] :

DROP PROCEDURE PRO_ALL_MVER;





[프로시저 생성 목록 확인] :

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_REG_COUNT INTEGER DEFAULT 0; -- [TB_MVER 테이블에서 등록, 수정, 삭제에서 다중 조회 체크 실시]

    DECLARE M_FORMAT_DATE VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [날짜 포맷 수행 실시]





    -- [SQL 수행 EXCEPTION 처리]
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        -- [롤백 처리 실시]
        ROLLBACK;

        -- [리턴 데이터 삽입]
        SELECT CONCAT('N : EXCEPTION : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;

        -- [리턴 테이블 반환]
        SELECT *
            FROM TB_MVER
        LIMIT 0;
    END;





    -- [1] : 현재 날짜 및 시간 데이터 변수에 지정 실시
    SET M_DEBUG = '1'; -- [디버깅 단계]

    SET M_DATE = (
        SELECT CAST(DATE_FORMAT(sysdate(), '%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

       -- [리턴 데이터 삽입]
       SELECT CONCAT('N : TYPE DATA IS NULL : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;

       -- [리턴 테이블 반환]
       SELECT *
            FROM TB_MVER
       LIMIT 0;

       -- [프로시저 종료]
       LEAVE PROC_BODY;

    END IF;





    -- [3] : 인풋 값으로 들어온 타입에 맞게 조회, 등록, 수정, 삭제 분기 처리 실시
    IF TRIM(I_TYPE) = '1' THEN  -- [조회]

        SET M_DEBUG = '3-1'; -- [디버깅 단계]


        -- [리턴 테이블 반환 : TB_MVER 테이블에 저장된 전체 데이터 조회 실시]
        SELECT CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y-%m-%d') AS CHAR) AS MVER_REDT,
               MVER_NAME,
               MVER_PLAT,
               MVER_CODE,
               MVER_VONM,
               MVER_MEMO,
               MVER_FLAG,
               MVER_WKNM,
               MVER_MSG
            FROM TB_MVER
        ORDER BY MVER_REDT DESC , TRIM(MVER_PLAT) ASC;


        -- [리턴 데이터 삽입]
        SELECT CONCAT('Y : 전체 조회 완료 : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;


        -- [프로시저 종료]
        LEAVE PROC_BODY;

    -- ============================================

    ELSEIF TRIM(I_TYPE) = '2' THEN  -- [등록]

        SET M_DEBUG = '3-2'; -- [디버깅 단계]


        -- [등록에 필요한 필수 인풋 값 널 체크 실시]
        IF I_TYPE IS NULL OR TRIM(I_TYPE) = '' OR LENGTH(I_TYPE) = 0 -- [타입]
            OR I_REDT IS NULL OR TRIM(I_REDT) = '' OR LENGTH(I_REDT) = 0 -- [일자]
            OR I_NAME IS NULL OR TRIM(I_NAME) = '' OR LENGTH(I_NAME) = 0 -- [명칭]
            OR 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_VONM IS NULL OR TRIM(I_VONM) = '' OR LENGTH(I_VONM) = 0 -- [앱 버전 이름]
            OR I_FLAG IS NULL OR TRIM(I_FLAG) = '' OR LENGTH(I_FLAG) = 0 -- [업데이트 선택 여부]
            OR I_WKNM IS NULL OR TRIM(I_WKNM) = '' OR LENGTH(I_WKNM) = 0 -- [작업자]
            OR I_MSG IS NULL OR TRIM(I_MSG) = '' OR LENGTH(I_MSG) = 0 -- [업데이트 표시 내용]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 등록에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 등록에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [같은 일자 및 같은 플랫폼, 같은 버전이 등록되어 있는지 확인 실시]
        SET M_DEBUG = '3-2-1'; -- [디버깅 단계]

        SET M_REG_COUNT = (
            SELECT COUNT(*)
                FROM TB_MVER
            WHERE TRIM(CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y%m%d') AS CHAR)) = TRIM(I_REDT) -- [날짜]
              AND TRIM(MVER_PLAT) = TRIM(LOWER(I_PLAT)) -- [플랫폼]
              AND TRIM(MVER_NAME) = TRIM(I_NAME) -- [명칭]
              -- AND TRIM(MVER_CODE) = TRIM(I_CODE) -- [앱 버전 코드]
              -- AND TRIM(MVER_VONM) = TRIM(I_VONM) -- [앱 버전 명칭]
        );
        IF M_REG_COUNT > 0 -- [조회된 개수가 있는 경우]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 해당 일자로 이미 등록된 플랫폼이 있습니다. 수정 및 삭제를 수행해주세요. (REDT, PLAT, NAME) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 해당 일자로 이미 등록된 플랫폼이 있습니다. 수정 및 삭제를 수행해주세요. (REDT, PLAT, NAME)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [등록 수행하기 전에 일반 및 강제 업데이트 플래그값 널 체크 실시]
        SET M_DEBUG = '3-2-2'; -- [디버깅 단계]

        IF TRIM(I_FLAG) = '0' OR I_FLAG = 0 -- [정의 되지 않은 타입 인 경우]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 등록에 필요한 일반 및 강제 업데이트 여부 플래그 값을 다시 확인해주세요. (FLAG / ', CAST(I_FLAG AS CHAR), ') : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 등록에 일반 및 강제 업데이트 여부 플래그 값을 다시 확인해주세요. (FLAG / ', CAST(I_FLAG AS CHAR), ')') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [실제로 TB_MVER 테이블에 등록 수행 실시]
        SET M_DEBUG = '3-2-3'; -- [디버깅 단계]

        -- [DATETIME 컬럼어 INSERT 위해 14 자리 형식 맞춤]
        IF LENGTH(TRIM(I_REDT)) = 8 THEN

            -- [14 자리 형식으로 날짜 포맷 수행 실시]
           SET M_FORMAT_DATE = CONCAT(I_REDT, M_DATE);

        ELSE
            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 등록을 수행하기 위한 날짜 형식이 올바르지 않습니다. (YYYYMMDD) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 등록을 수행하기 위한 날짜 형식이 올바르지 않습니다. (YYYYMMDD)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;
        END IF;
        -- SET M_FORMAT_DATE = RPAD(I_REDT,13,'0');
        -- SET M_FORMAT_DATE = CONCAT(M_FORMAT_DATE, '1');


        -- [실제로 TB_MVER 테이블에 등록 수행 실시]
        SET M_DEBUG = '3-2-4'; -- [디버깅 단계]

        -- /*
        START TRANSACTION;
        INSERT INTO TB_MVER
            (MVER_REDT, MVER_NAME, MVER_PLAT, MVER_CODE, MVER_VONM, MVER_MEMO, MVER_FLAG, MVER_WKNM, MVER_MSG)
        VALUES (DATE_FORMAT(CAST(M_FORMAT_DATE AS DATETIME), '%Y-%m-%d %H:%I:%s'), I_NAME, LOWER(I_PLAT), I_CODE, I_VONM, I_MEMO, I_FLAG, I_WKNM, I_MSG);
        COMMIT;
        -- */


        -- [리턴 데이터 삽입]
        -- SELECT CONCAT('Y : 앱 버전 등록을 완료했습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
        SELECT CONCAT('Y : 앱 버전 등록을 완료했습니다.', '', '') AS O_MSG;


        -- [리턴 테이블 반환]
        SELECT *
            FROM TB_MVER
        LIMIT 0;


        -- [프로시저 종료]
        LEAVE PROC_BODY;

    -- ============================================

    ELSEIF TRIM(I_TYPE) = '3' THEN  -- [수정]

        SET M_DEBUG = '3-3'; -- [디버깅 단계]


        -- [수정에 필요한 필수 인풋 값 널 체크 실시]
        IF I_TYPE IS NULL OR TRIM(I_TYPE) = '' OR LENGTH(I_TYPE) = 0 -- [타입]
            OR I_REDT IS NULL OR TRIM(I_REDT) = '' OR LENGTH(I_REDT) = 0 -- [일자]
            OR I_NAME IS NULL OR TRIM(I_NAME) = '' OR LENGTH(I_NAME) = 0 -- [명칭]
            OR I_PLAT IS NULL OR TRIM(I_PLAT) = '' OR LENGTH(I_PLAT) = 0 -- [플랫폼]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 수정에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 수정에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [같은 일자 및 같은 플랫폼 정상 등록되어 있는지 확인 실시]
        SET M_DEBUG = '3-3-1'; -- [디버깅 단계]

        SET M_REG_COUNT = (
            SELECT COUNT(*)
                FROM TB_MVER
            WHERE TRIM(CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y%m%d') AS CHAR)) = TRIM(I_REDT) -- [날짜]
              AND TRIM(MVER_PLAT) = TRIM(LOWER(I_PLAT)) -- [플랫폼]
              AND TRIM(MVER_NAME) = TRIM(I_NAME) -- [명칭]
        );
        IF M_REG_COUNT = 0 -- [조회된 개수가 없는 경우]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 수정할 수 있는 조건에 부합하는 값이 없습니다. (REDT, NAME, PLAT) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 수정할 수 있는 조건에 부합하는 값이 없습니다. (REDT, NAME, PLAT)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [수정 수행하기 전에 일반 및 강제 업데이트 플래그값 널 체크 실시]
        SET M_DEBUG = '3-3-2'; -- [디버깅 단계]

        IF TRIM(I_FLAG) = '0' OR I_FLAG = 0 -- [정의 되지 않은 타입 인 경우]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 수정에 필요한 일반 및 강제 업데이트 여부 플래그 값을 다시 확인해주세요. (FLAG / ', CAST(I_FLAG AS CHAR), ') : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 수정에 필요한 일반 및 강제 업데이트 여부 플래그 값을 다시 확인해주세요. (FLAG / ', CAST(I_FLAG AS CHAR), ')') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [DATETIME 컬럼어 INSERT 위해 14 자리 형식 맞춤]
        SET M_DEBUG = '3-3-3'; -- [디버깅 단계]

        IF LENGTH(TRIM(I_REDT)) = 8 THEN

            -- [14 자리 형식으로 날짜 포맷 수행 실시]
           SET M_FORMAT_DATE = CONCAT(I_REDT, M_DATE);

        ELSE
            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 수정을 수행하기 위한 날짜 형식이 올바르지 않습니다. (YYYYMMDD) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 수정을 수행하기 위한 날짜 형식이 올바르지 않습니다. (YYYYMMDD)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;
        END IF;
        -- SET M_FORMAT_DATE = RPAD(I_REDT,13,'0');
        -- SET M_FORMAT_DATE = CONCAT(M_FORMAT_DATE, '1');


        -- [실제로 TB_MVER 테이블에 등록된 데이터 수정 실시]
        SET M_DEBUG = '3-3-4'; -- [디버깅 단계]

        START TRANSACTION;
        UPDATE TB_MVER
        SET MVER_NAME = I_NAME, MVER_PLAT = LOWER(I_PLAT), MVER_CODE = I_CODE, MVER_VONM = I_VONM, MVER_MEMO = I_MEMO, MVER_FLAG = I_FLAG, MVER_WKNM = I_WKNM, MVER_MSG = I_MSG
        WHERE TRIM(CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y%m%d') AS CHAR)) = TRIM(I_REDT)
           AND TRIM(MVER_NAME) = TRIM(I_NAME)
           AND TRIM(MVER_PLAT) = TRIM(LOWER(I_PLAT));
        COMMIT;


        -- [리턴 데이터 삽입]
        -- SELECT CONCAT('Y : 앱 버전 수정을 완료했습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
        SELECT CONCAT('Y : 앱 버전 수정을 완료했습니다.', '', '') AS O_MSG;


        -- [리턴 테이블 반환]
        SELECT *
            FROM TB_MVER
        LIMIT 0;


        -- [프로시저 종료]
        LEAVE PROC_BODY;

    -- ============================================

    ELSEIF TRIM(I_TYPE) = '4' THEN  -- [삭제]

        SET M_DEBUG = '3-4'; -- [디버깅 단계]


        -- [삭제에 필요한 필수 인풋 값 널 체크 실시]
        IF I_TYPE IS NULL OR TRIM(I_TYPE) = '' OR LENGTH(I_TYPE) = 0 -- [타입]
            OR I_REDT IS NULL OR TRIM(I_REDT) = '' OR LENGTH(I_REDT) = 0 -- [일자]
            OR I_NAME IS NULL OR TRIM(I_NAME) = '' OR LENGTH(I_NAME) = 0 -- [명칭]
            OR 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_VONM IS NULL OR TRIM(I_VONM) = '' OR LENGTH(I_VONM) = 0 -- [앱 버전 이름]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 삭제에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 삭제에 필요한 데이터를 다시 확인해주세요. (INPUT DATA IS NULL)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [같은 일자 및 같은 플랫폼 정상 등록되어 있는지 확인 실시]
        SET M_DEBUG = '3-4-1'; -- [디버깅 단계]

        SET M_REG_COUNT = (
            SELECT COUNT(*)
                FROM TB_MVER
            WHERE TRIM(CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y%m%d') AS CHAR)) = TRIM(I_REDT) -- [날짜]
              AND TRIM(MVER_PLAT) = TRIM(LOWER(I_PLAT)) -- [플랫폼]
              AND TRIM(MVER_NAME) = TRIM(I_NAME) -- [명칭]
              AND TRIM(MVER_CODE) = TRIM(I_CODE) -- [앱 버전 코드]
              AND TRIM(MVER_VONM) = TRIM(I_VONM) -- [앱 버전 이름]
        );
        IF M_REG_COUNT = 0 -- [조회된 개수가 없는 경우]
            THEN

            -- [리턴 데이터 삽입]
            -- SELECT CONCAT('N : 삭제할 수 있는 조건에 부합하는 값이 없습니다. (REDT, NAME, PLAT, CODE, VONM) : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
            SELECT CONCAT('N : 삭제할 수 있는 조건에 부합하는 값이 없습니다. (REDT, NAME, PLAT, CODE, VONM)', '', '') AS O_MSG;

            -- [리턴 테이블 반환]
            SELECT *
                FROM TB_MVER
            LIMIT 0;

            -- [프로시저 종료]
            LEAVE PROC_BODY;

        END IF;


        -- [실제로 TB_MVER 테이블에 등록된 데이터 삭제 실시]
        SET M_DEBUG = '3-4-2'; -- [디버깅 단계]

        START TRANSACTION;
        DELETE FROM TB_MVER
        WHERE TRIM(CAST(DATE_FORMAT(CAST(MVER_REDT AS DATE ), '%Y%m%d') AS CHAR)) = TRIM(I_REDT)
           AND TRIM(MVER_NAME) = TRIM(I_NAME)
           AND TRIM(MVER_PLAT) = TRIM(LOWER(I_PLAT))
           AND TRIM(MVER_CODE) = TRIM(I_CODE)
           AND TRIM(MVER_VONM) = TRIM(I_VONM);
        COMMIT;


        -- [리턴 데이터 삽입]
        -- SELECT CONCAT('Y : 앱 버전 삭제를 완료했습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;
        SELECT CONCAT('Y : 앱 버전 삭제를 완료했습니다.', '', '') AS O_MSG;


        -- [리턴 테이블 반환]
        SELECT *
            FROM TB_MVER
        LIMIT 0;


        -- [프로시저 종료]
        LEAVE PROC_BODY;

    -- ============================================

    ELSE

        SET M_DEBUG = '3-5'; -- [디버깅 단계]

        -- [리턴 데이터 삽입]
        SELECT CONCAT('N : 정의되지 않은 타입 입니다. : [', CAST(M_DEBUG AS CHAR), ']') AS O_MSG;


        -- [리턴 테이블 반환]
        SELECT *
            FROM TB_MVER
        LIMIT 0;


        -- [프로시저 종료]
        LEAVE PROC_BODY;

    END IF;


/**************************************************************/
END$$;
DELIMITER ;
/**************************************************************/

 

반응형
Comments