투케이2K

135. (Oracle/오라클) function 함수 생성 및 for in loop 개별 데이터 json 형식으로 반환 실시 본문

OracleDB

135. (Oracle/오라클) function 함수 생성 및 for in loop 개별 데이터 json 형식으로 반환 실시

투케이2K 2021. 7. 20. 17:59

[ 개발 환경 설정 ]

개발 툴 : Toad

개발 언어 : Oracle


[함수 호출 방법]


[소스 코드]

CREATE OR REPLACE FUNCTION GET_DEPT_CHECK (
                                            I_NAME IN VARCHAR, 
                                            I_DEPT IN VARCHAR
                                          )
                                                
                                                
/***************************************************************

설명 - 국가 멸망 판단 반환 

---------------------------------------------------------------

생성 - edit 창에서 F9를 눌러서 쿼리 실행 시 자동 생성된다

---------------------------------------------------------------

IN - I_NAME : 사용자 이름
     I_DEPT : 사용자 부서
     
---------------------------------------------------------------

함수 호출 - SELECT T_NAME, T_DEPT, GET_DEPT_CHECK(T_NAME, T_DEPT) 
              FROM TEST_USER
           WHERE T_DEPT IN('백제', '고구려', '신라')
           ORDER BY T_DEPT DESC;
              
---------------------------------------------------------------

함수 결과 - 생존 / 멸망      

---------------------------------------------------------------
              
함수 삭제 - DROP FUNCTION GET_DEPT_CHECK;  
           
***************************************************************/

                                     
           
/******** [Function 호출 시 반환되는 데이터 (VARCHAR2)] *********/                                               
RETURN VARCHAR
 
IS

   
/******************** [전역 변수 선언 부분] ********************/    
M_DATA VARCHAR2(100);    
  

/* *************** [메인부분 시작 및 커서생성] **************** */
       
 BEGIN
    
    -- [전역변수로 생성한 테이블을 FOR문을 수행하면서 데이터 삽입 실시]
    FOR M_LIST IN (
            /*[주요 설명]
            *1. M_LIST에 SELECT 쿼리를 실행한 테이블 데이터를 저장한다
            *2. WHERE 조건에 인풋으로 들어온 데이터와 같은 데이터를 지정해야 한행씩 정상 출력됨
            */
            SELECT T_NAME, T_DEPT
                FROM TEST_USER
             WHERE T_NAME = I_NAME
                  AND T_DEPT = I_DEPT               
    ) 
    -- [조회된 데이터 반복문을 돌면서 FUNCTION 함수 수행 결과 추가 실시]
    LOOP        
        M_DATA := CASE M_LIST.T_DEPT 
                       WHEN '백제' THEN '{'||'NAME:'||M_LIST.T_NAME||', '||'DEPT:'||'멸망'||'}'
                       WHEN '고구려' THEN '{'||'NAME:'||M_LIST.T_NAME||', '||'DEPT:'||'멸망'||'}'
                       WHEN '신라' THEN '{'||'NAME:'||M_LIST.T_NAME||', '||'DEPT:'||'생존'||'}' 
                       ELSE '{'||'NAME:'||M_LIST.T_NAME||','||'DEPT:'||'NOT'||'}' 
                  END;        
        -- [디버깅 결과 로그 출력]
        DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);                                       
    END LOOP;
  
    RETURN M_DATA;   
    
/* **************** [사용함수 종료 완료 부분] ***************** */
 END;
/
/* **************** [사용함수 종료 완료 부분] ***************** */

[결과 출력]


반응형
Comments