투케이2K

81. (TWOK/UTIL) [Oracle/DB] 함수 (Function) - input , output 본문

투케이2K 유틸파일

81. (TWOK/UTIL) [Oracle/DB] 함수 (Function) - input , output

투케이2K 2022. 10. 18. 17:02

[설 명]

프로그램 : Oracle / DB

설 명 : 함수 (Function) - input , output

 

[소스 코드]

CREATE OR REPLACE FUNCTION GET_DEPT_DATE (I_NAME IN VARCHAR, 
                                          I_DEPT IN VARCHAR  
                                          )
                                                
                                                
/***************************************************************
설명 - 국가 멸망 판단 반환 [백제, 후백제 생존]
---------------------------------------------------------------
생성 - edit 창에서 F9를 눌러서 쿼리 실행 시 자동 생성된다
---------------------------------------------------------------
IN - I_NAME : 사용자 이름
     I_DEPT : 사용자 부서
---------------------------------------------------------------
함수 호출 - SELECT T_NAME, T_DEPT, GET_DEPT_DATE(T_NAME, T_DEPT) 
              FROM TEST_USER;
---------------------------------------------------------------
함수 결과 - 생존 / 멸망      
---------------------------------------------------------------              
함수 삭제 - DROP FUNCTION GET_DEPT_DATE;             
***************************************************************/

                                                
/********** Function 호출 시 반환되는 데이터 (VARCHAR2) ***********/                                               
RETURN VARCHAR
 
IS
   
/********************** 전역 변수 선언 부분 **********************/    
M_DATA VARCHAR2(100); 
M_COUNT  NUMBER;       

/* *************** [메인부분 시작 및 커서생성] **************** */
       
 BEGIN
    M_COUNT := 1; -- 초기 카운트 변수값 대입
    
    -- 전역변수로 생성한 테이블을 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               
    ) 
    LOOP
        M_DATA := CASE M_LIST.T_DEPT 
                       WHEN '백제' THEN M_LIST.T_DEPT||' 생존'
                       WHEN '후백제' THEN M_LIST.T_DEPT||' 생존' 
                       ELSE M_LIST.T_DEPT||' 멸망' 
                  END;
        DBMS_OUTPUT.PUT_LINE('=============================');
        DBMS_OUTPUT.PUT_LINE('M_COUNT : ' || M_COUNT);
        DBMS_OUTPUT.PUT_LINE('M_DATA : ' || M_DATA);       
        DBMS_OUTPUT.PUT_LINE('=============================');            
                  
        M_COUNT := (M_COUNT+1); --카운트값 증가                         
    END LOOP;
  
    RETURN M_DATA;   
    
/* **************** [사용함수 종료 완료 부분] ***************** */
 END;
/
/* **************** [사용함수 종료 완료 부분] ***************** */

 


 

반응형
Comments