상세 컨텐츠

본문 제목

음력 양력 변환

DataBase/Oracle

by 탑~! 2016. 2. 26. 10:39

본문

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

* TABLE 생성

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

 

CREATE TABLE XXX.LUNAR_TO_SOLAR

(

  LUNAR_DATE  VARCHAR2(8)                       NOT NULL,

  SOLAR_DATE  VARCHAR2(8),

  YUN         CHAR(1),

  GANJI       VARCHAR2(8)

)

LOGGING 

NOCOMPRESS 

NOCACHE

NOPARALLEL

NOMONITORING;

 

COMMENT ON COLUMN XXX.LUNAR_TO_SOLAR.LUNAR_DATE IS '양력';

 

COMMENT ON COLUMN XXX.LunarToSolar.SOLAR_DATE IS '음력';

 

COMMENT ON COLUMN XXX.LunarToSolar.YUN IS '윤년';

 

COMMENT ON COLUMN XXX.LunarToSolar.GANJI IS '간지';

 

 

 

ALTER TABLE XXX.LUNAR_TO_SOLAR ADD (

  CONSTRAINT LUNAR_TO_SOLAR_PK

  PRIMARY KEY

  (LUNAR_DATE));



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

* FUNCTION  생성

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

 

CREATE OR REPLACE FUNCTION XXX.F_LUNAR_TO_SOLAR (

    IN_DATE IN VARCHAR2,

    IN_FLAG IN INT

)

RETURN VARCHAR2

IS

    V_RESULT VARCHAR2(8);

 

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

  

* TITLE             : F_LUNAR_TO_SOLAR 

* DESCRIPTION : 양음력 변환 

* 작성자            :  까칠한 쑤

* 일 자              : 

* USE Table   : LUNARTOSOLAR : 양음력 매핑 Table

* 주요 코드     : IN_FLAG   : 0  : 양력 ==> 음력 

                                       1  : 음력 ==> 양력 

                      IN_DATE    : 20040802 형식의 Date

* USE         : SELECT F_LUNAR_TO_SOLAR('20041119',0)

                   (양력 ==> 음력) 

                   SELECT F_LUNAR_TO_SOLAR('20041119',1)

                   (음력 ==> 양력) 

-- 날짜 형식이 틀리면 NULL 을 리턴한다..(DB에 Data 가 없으므로..) 

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

BEGIN

     

    -- 양력 => 음력

    IF IN_FLAG = 0 THEN

        SELECT SOLAR_DATE

          INTO V_RESULT

          FROM LUNARTOSOLAR

        WHERE LUNAR_DATE = IN_DATE;

         

    -- 음력 => 양력     

    ELSE

        SELECT LUNAR_DATE

          INTO V_RESULT

          FROM LUNARTOSOLAR

        WHERE SOLAR_DATE = IN_DATE;

    END IF;

     

   RETURN V_RESULT;

    

   EXCEPTION

     WHEN NO_DATA_FOUND THEN

       NULL;

     WHEN OTHERS THEN

       -- Consider logging the error and then re-raise

       RAISE;

END F_LUNAR_TO_SOLAR;

 

LONAR_TO_SOLAR.txt


관련글 더보기