투케이2K

52. (MYSQL/SQL) 함수 (FUNCTION) - 사용자 정보 포맷 수행 본문

MySqlDB

52. (MYSQL/SQL) 함수 (FUNCTION) - 사용자 정보 포맷 수행

투케이2K 2022. 6. 5. 10:41

[개발 환경 설정]

개발 툴 : Heidi

개발 언어 : Mysql

 

[소스 코드]

/**************************************************************/
-- [DELIMITER : 함수 앞,뒤의 위치하여 안에 있는 부분은  한번에 실행]
DELIMITER $$ 
/**************************************************************/
DROP FUNCTION IF EXISTS FNC_USER_INFO; -- [이미 생성된 함수가 있으면 DROP]
CREATE FUNCTION FNC_USER_INFO -- [함수 생성]
(
    I_NAME VARCHAR(100), -- [인풋 : 이름]
    I_AGE  INTEGER -- [인풋 : 나이]        
)

RETURNS VARCHAR(500) -- [리턴 : 데이터]

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


/***************************************************************
[함수 설명]


[설 명] : 사용자 정보 포맷 함수


[함수 호출] : 

SELECT FNC_USER_INFO('홍길동', 15) AS 함수결과;


[함수 삭제] :

DROP FUNCTION FNC_USER_INFO;


[함수 생성 목록 확인] : 

SHOW FUNCTION STATUS;
 
***************************************************************/


/**************************************************************/
BEGIN
/**************************************************************/


    -- [전역 변수 선언]
    DECLARE RETURN_DATA VARCHAR(500) DEFAULT '';
    DECLARE M_DEBUG VARCHAR(100) DEFAULT '';
    
    
    
    
    
    -- [SQL 수행 EXCEPTION 처리]
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        
        -- [리턴 데이터 삽입]
        SET RETURN_DATA = CONCAT('N : EXCEPTION : M_DEGUB : [', CAST(M_DEBUG AS CHAR), ']');
        
        -- [함수 호출 종료]
        RETURN RETURN_DATA;
    END;
    
    
    
    
    
    -- [1] : 인풋 데이터 널 체크 수행 실시    
    SET M_DEBUG = '1'; -- [디버깅 단계]
    
    IF I_NAME IS NULL OR I_NAME = '' OR LENGTH(I_NAME) = 0 
       OR I_AGE IS NULL OR I_AGE = 0 THEN
       
       -- [리턴 데이터 삽입]
       SET RETURN_DATA = CONCAT('N : INPUT DATA IS NULL : M_DEGUB : [', CAST(M_DEBUG AS CHAR), ']');
       
       -- [함수 종료]
       RETURN RETURN_DATA;
       
    END IF;
    
    
    
    
    
    -- [2] : [사용자 정보 포맷 수행 실시]
    SET M_DEBUG = '2'; -- [디버깅 단계]
    
    SET RETURN_DATA = CONCAT('Y : USER : NAME : ', CAST(I_NAME AS CHAR), ' AGE : ', CAST(I_AGE AS CHAR));
    
    
    
    
    
    -- [3] : [리턴 데이터 반환]
    SET M_DEBUG = '3'; -- [디버깅 단계]
    
    RETURN RETURN_DATA;
    
	     
/**************************************************************/
END$$;
DELIMITER ;
/**************************************************************/
 

[결과 출력]

 

 

반응형
Comments