투케이2K

67. (MYSQL/SQL) 프로시저 (PROCEDURE) - 디바이스 고유값 등록 전체 조회 및 개별 조회 실시 본문

MySqlDB

67. (MYSQL/SQL) 프로시저 (PROCEDURE) - 디바이스 고유값 등록 전체 조회 및 개별 조회 실시

투케이2K 2022. 6. 20. 09:47
반응형

[개발 환경 설정]

개발 툴 : Heidi

개발 언어 : Mysql

 

[소스 코드]

/**************************************************************/
-- [DELIMITER : 프로시저 앞,뒤의 위치하여 안에 있는 부분은  한번에 실행]
DELIMITER $$
/**************************************************************/
DROP PROCEDURE IF EXISTS PRO_SEL_MOCO; -- [이미 생성된 프로시저가 있으면 DROP]
CREATE PROCEDURE PRO_SEL_MOCO -- [프로시저 생성]
(
    IN I_IDNO    VARCHAR(100) CHARACTER SET UTF8,     -- [인풋 : 사용자 학번]
    IN I_NAME    VARCHAR(300) CHARACTER SET UTF8,     -- [인풋 : 사용자 성명]
    IN I_IDDI    VARCHAR(50) CHARACTER SET UTF8,      -- [인풋 : 사용자 신분]
    IN I_PLAT    VARCHAR(100) CHARACTER SET UTF8,     -- [인풋 : 디바이스 플랫폼]

    OUT O_MSG VARCHAR(1000) CHARACTER SET UTF8        -- [리턴 : 메시지]
)

/**************************************************************/


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


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


[설 명] : 사용자에게 등록된 디바이스 고유값 조회 실시


[프로시저 호출] : [조건 없음]

CALL PRO_SEL_MOCO('', '', '', '', @O_MSG);
SELECT @O_MSG;


[프로시저 호출] : [조건 지정]

CALL PRO_SEL_MOCO('', '', '', 'ios', @O_MSG);
SELECT @O_MSG;


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


[프로시저 삭제] :

DROP PROCEDURE PRO_SEL_MOCO;


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

SHOW PROCEDURE STATUS;

***************************************************************/


/***************************************************************
[로직 정리 : M_DEBUG]

[1] : 현재 날짜 및 시간 데이터 변수에 지정 실시

[2] : LIKE 조건 사용해 인풋값으로 들어온 조건 매핑 실시
***************************************************************/


    -- [전역 변수 선언]
    DECLARE M_DEBUG VARCHAR(100) CHARACTER SET UTF8 DEFAULT ''; -- [디버깅 단계]
    DECLARE M_DATE VARCHAR(100) 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), ']');

        -- [리턴 테이블 반환]
        SELECT '' AS '대학구분',
               '' AS '대학명',
               '' AS '상태',
               '' AS '설치일자',
               '' AS '학번',
               '' AS '성명',
               '' AS '학과명',
               '' AS '신분',
               '' AS '연락처',
               '' AS '디바이스',
               '' AS '플랫폼',
               '' AS '분실상태',
               '' AS '분실일자'
        ;

    END;





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

    SET M_DATE = (
        SELECT CAST(DATE_FORMAT(sysdate(), '%Y%m%d%H%i%s') AS CHAR)
    );





    -- [2] : LIKE 조건 사용해 인풋값으로 들어온 조건 매핑 실시
    SET M_DEBUG = '2'; -- [디버깅 단계]

    -- [UMCS_MAST 테이블에서 MAST_MOCO 값이 널이 아닌 것을 출력 실시]
    SELECT MAST_UNIVNM AS '대학구분',
           MAST_UNNM AS '대학명',
           MAST_SDNM AS '상태',
           CAST(DATE_FORMAT(CAST(MAST_MODT AS DATE ), '%Y-%m-%d') AS CHAR)  AS '설치일자',
           MAST_IDNO AS '학번',
           MAST_NAME AS '성명',
           MAST_PSNM AS '학과명',
           MAST_SDNM AS '신분',
           MAST_PHONE AS '연락처',
           MAST_MOCO AS '디바이스',
           MAST_PLAT AS '플랫폼',
           MAST_PKEY AS '분실상태',
           MAST_KEYDT AS '분실일자'
        FROM UMCS_MAST
    WHERE TRIM(MAST_MOCO) != '' -- [디바이스 고유값이 널 아니고]
        AND MAST_MOCO IS NOT NULL
        AND TRIM(MAST_PLAT) != '' -- [플랫폼 값이 널 아니고]
        AND MAST_PLAT IS NOT NULL

        AND TRIM(MAST_IDNO) LIKE CONCAT('%', CAST(I_IDNO AS CHAR), '%')
        AND TRIM(MAST_IDDI) LIKE CONCAT('%', CAST(I_IDDI AS CHAR), '%')
        AND TRIM(MAST_NAME) LIKE CONCAT('%', CAST(I_NAME AS CHAR), '%')
        AND TRIM(MAST_PLAT) LIKE CONCAT('%', CAST(I_PLAT AS CHAR), '%')

    ORDER BY CAST(MAST_MODT AS INTEGER ) DESC;


    -- [리턴 데이터 삽입]
    SET O_MSG = CONCAT('Y : 디바이스 사용자 조회가 완료 되었습니다. : M_DEBUG : [', CAST(M_DEBUG AS CHAR), ']');


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


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

[결과 출력]

 

반응형
Comments