zioinfo-mail/zioinfo/sql/function_070528.sql
DESKTOP-TKLFCPR\ython e228faabf5 feat(itsm): G-1~G-12 확장 기능 + 하네스/봇/설치스크립트 구현
G-1: 메신저 Webhook Relay + _send_to_room 실제 httpx 호출 구현
G-2: POST /api/tasks/bulk SR 대량작업 엔드포인트 (최대 100건)
G-3: 라이선스 만료 알림 스케줄러 (매일 09:00 KST)
G-4: 체험판 upgrade_banner 필드 + license.py 배너 로직
G-5: core/auto_rca.py + incidents/problem auto-rca 엔드포인트
G-6: core/deploy_impact.py + vibe impact-analysis 엔드포인트
G-7: core/ticket_classifier.py + SR 생성 시 AI 분류 + ai-suggestion API
G-8: VulnPatchRecord 모델 + vuln_scan 패치추적 4개 엔드포인트
G-9: core/jira_sync.py + gateway Jira/Confluence 연동 엔드포인트
G-10: core/push_notify.py + routers/push.py + PushSubscription 모델
G-11: approvals 다중승인 (위임/서명/기한초과/마감연장)
G-12: alembic.ini + migrations/ + cicd/migrate_to_postgres.sh

하네스: guardia-orchestrator 확장기능 Phase 반영
봇명령어: /sr /status /license /bulk 슬래시 명령어 추가
설치스크립트: setup/ (Ubuntu, CentOS, RHEL, Windows) --test 옵션 포함

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:18:52 +09:00

3270 lines
107 KiB
MySQL

CREATE OR REPLACE FUNCTION NSISUPDB.GET_PRD_INFO_LIST (
in_prd_se IN TC_PRD_INFO.PRD_SE%TYPE DEFAULT NULL
)
/******************************************************
파일명 : GET_PRD_INFO
버전 : 0.0.0.1
작성일 : 2006. 9. 20.
작성자 : 유동명
Use Case명 :
내 용 : 주기정보를 읽는다.
주기구분이 지정된 경우, 지정된 주기정보만 읽는다.
*******************************************************/
RETURN Types.cursorType IS
v_cursor Types.cursorType;
BEGIN
OPEN v_cursor FOR
SELECT
PRD_SE, PRD_NM, PRD_ENG_NM
FROM
TC_PRD_INFO
WHERE
PRD_SE = NVL (in_prd_se, PRD_SE)
ORDER BY
PRD_NM;
RETURN v_cursor;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN v_cursor;
WHEN OTHERS THEN
RAISE;
END GET_PRD_INFO_LIST;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_ORG_NAME
(
V_ORG_ID IN TN_ORG.ORG_ID%TYPE,
V_LANG IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_ORG_NAME
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : 기관명을 언어에 맞게 리턴한다.
***********************************************************/
RETURN TN_ORG.ORG_NM%TYPE
IS
V_ORG_NM_KOR TN_ORG.ORG_NM%TYPE;
V_ORG_NM_ENG TN_ORG.ORG_NM_ENG%TYPE;
V_ORG_NM TN_ORG.ORG_NM%TYPE;
BEGIN
SELECT ORG_NM, ORG_NM_ENG
INTO V_ORG_NM_KOR, V_ORG_NM_ENG
FROM TN_ORG
WHERE ORG_ID = V_ORG_ID;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched Organization Name not found. CD_ID = ' || V_ORG_ID);
END IF;
IF V_LANG = 'KOR' THEN
V_ORG_NM := V_ORG_NM_KOR;
ELSIF V_LANG = 'ENG' THEN
V_ORG_NM := V_ORG_NM_ENG;
ELSE
V_ORG_NM := '';
DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' or ''ENG (or NULL)');
END IF;
RETURN V_ORG_NM;
END GET_ORG_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_OBJ_VAR_ID (
in_org_id IN TN_ITM_LIST.ORG_ID%TYPE,
in_tbl_id IN TN_ITM_LIST.TBL_ID%TYPE,
in_itm_id IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_OBJ_VAR_ID
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 항목코드에 대해 대상항목분류를 읽는다..
**********************************************************/
RETURN TN_ITM_LIST.OBJ_VAR_ID%TYPE IS
v_result TN_ITM_LIST.OBJ_VAR_ID%TYPE := NULL;
BEGIN
SELECT
OBJ_VAR_ID
INTO
v_result
FROM
TN_ITM_LIST
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
ITM_ID = in_itm_id;
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RAISE;
END GET_OBJ_VAR_ID;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_NEXT_PRD_DE (
in_prd_se IN TN_DT.PRD_SE%TYPE,
in_prd_de IN TN_DT.PRD_DE%TYPE
) RETURN TN_DT.PRD_DE%TYPE
/**********************************************************
파일명 : GET_NEXT_PRD_DE
버전 : 0.0.0.1
작성일 : 2006. 11. 13.
작성자 : 유동명
Use Case 명 :
내 용 : 주기에 따른 다음 수록시점을 구한다.
***********************************************************/
IS
yyyy NUMBER(4) := NULL;
mm NUMBER(2) := NULL;
dd NUMBER(2) := NULL;
result TN_DT.PRD_DE%TYPE := NULL;
BEGIN
CASE in_prd_se
WHEN 'D' THEN
IF LENGTH (in_prd_de) <> 8 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
result := TO_CHAR ((TO_DATE (in_prd_de) + 1), 'YYYYMMDD');
WHEN 'T' THEN
IF LENGTH (in_prd_de) <> 8 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
mm := TO_NUMBER (SUBSTR (in_prd_de, 5, 2));
dd := TO_NUMBER (SUBSTR (in_prd_de, 7, 2));
dd := dd + 1;
IF dd > 3 THEN
dd := 1;
mm := mm + 1;
END IF;
IF mm > 12 THEN
mm := 1;
yyyy := yyyy + 1;
END IF;
result := yyyy || LPAD (mm, 2, '0') || LPAD (dd, 2, '0');
WHEN 'M' THEN
IF LENGTH (in_prd_de) <> 6 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
mm := TO_NUMBER (SUBSTR (in_prd_de, 5, 2));
mm := mm + 1;
IF mm > 12 THEN
mm := 1;
yyyy := yyyy + 1;
END IF;
result := yyyy || LPAD (mm, 2, '0');
WHEN 'B' THEN
IF LENGTH (in_prd_de) <> 6 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
mm := TO_NUMBER (SUBSTR (in_prd_de, 5, 2));
mm := mm + 1;
IF mm > 6 THEN
mm := 1;
yyyy := yyyy + 1;
END IF;
result := yyyy || LPAD (mm, 2, '0');
WHEN 'Q' THEN
IF LENGTH (in_prd_de) <> 6 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
mm := TO_NUMBER (SUBSTR (in_prd_de, 5, 2));
mm := mm + 1;
IF mm > 4 THEN
mm := 1;
yyyy := yyyy + 1;
END IF;
result := yyyy || LPAD (mm, 2, '0');
WHEN 'H' THEN
IF LENGTH (in_prd_de) <> 6 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
mm := TO_NUMBER (SUBSTR (in_prd_de, 5, 2));
mm := mm + 1;
IF mm > 2 THEN
mm := 1;
yyyy := yyyy + 1;
END IF;
result := yyyy || LPAD (mm, 2, '0');
WHEN 'Y' THEN
IF LENGTH (in_prd_de) <> 4 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
yyyy := yyyy + 1;
result := TO_CHAR (yyyy);
WHEN 'F' THEN
IF LENGTH (in_prd_de) <> 4 THEN
RAISE_APPLICATION_ERROR (-20001, '수록시점 형식 오류');
END IF;
yyyy := TO_NUMBER (SUBSTR (in_prd_de, 1, 4));
yyyy := yyyy + 1;
result := TO_CHAR (yyyy);
END CASE;
RETURN result;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END GET_NEXT_PRD_DE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_LVL_CO (
in_org_id IN TN_ITM_LIST.ORG_ID%TYPE,
in_tbl_id IN TN_ITM_LIST.TBL_ID%TYPE,
in_itm_id IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_OBJ_VAR_ID
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 항목코드에 대해 대상항목분류를 읽는다..
**********************************************************/
RETURN TN_OBJ_ITM_CLS.LVL_CO%TYPE IS
v_result TN_OBJ_ITM_CLS.LVL_CO%TYPE;
BEGIN
v_result := 0;
SELECT
B.LVL_CO
INTO
v_result
FROM
TN_ITM_LIST A,
TN_OBJ_ITM_CLS B
WHERE
A.ORG_ID = in_org_id AND
A.TBL_ID = in_tbl_id AND
A.ITM_ID = in_itm_id AND
A.ORG_ID = B.ORG_ID AND
A.TBL_ID = B.TBL_ID AND
A.OBJ_VAR_ID = B.OBJ_VAR_ID;
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RAISE;
END GET_LVL_CO;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_JBSS_USER_NAME
(
vMid IN T_SM_USER.MID%TYPE
)
/**********************************************************
파일명 : GET_CODE_ABBR_NAME
버전 : 0.0.0.1
작성일 : 2006.11.14
작성자 : 김주관
Use Case 명 :
내 용 : 전북도정현황시스템 사용자명을 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT UNM
INTO V_NM
FROM T_SM_USER
WHERE MID = vMid;
RETURN V_NM;
END GET_JBSS_USER_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_ITM_PUB_SE (
in_org_id IN TN_ITM_LIST.ORG_ID%TYPE,
in_tbl_id IN TN_ITM_LIST.TBL_ID%TYPE,
in_itm_id IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_ITM_PUB_SE
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 항목의 공표구분 읽기.
**********************************************************/
RETURN TN_ITM_LIST.PUB_SE%TYPE IS
v_result TN_ITM_LIST.PUB_SE%TYPE;
BEGIN
v_result := 0;
SELECT
DECODE (PUB_SE, NULL, '1210113', '1210110', '1210113', PUB_SE) PUB_SE
INTO
v_result
FROM
TN_ITM_LIST
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
ITM_ID = in_itm_id;
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RAISE;
END GET_ITM_PUB_SE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_ITEM_SN
(
V_TBL_ID IN TN_ITM_LIST.TBL_ID%TYPE,
V_ORG_ID IN TN_ITM_LIST.ORG_ID%TYPE,
V_OBJ_VAR_ID IN TN_ITM_LIST.OBJ_VAR_ID%TYPE,
V_ITM_ID IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_ITM_SN
버전 : 0.0.0.1
작성일 : 2006.9. 4
작성자 : 김은옥
Use Case 명 :
내 용 : 자료항목의 순서를 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_SN VARCHAR2(3);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT to_char(nvl(CHAR_ITM_SN,0))
INTO V_SN
FROM TN_ITM_LIST
WHERE TBL_ID = V_TBL_ID
AND ORG_ID = V_ORG_ID
AND OBJ_VAR_ID = V_OBJ_VAR_ID
AND ITM_ID = V_ITM_ID ;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. ITM_ID = ' || V_ITM_ID);
END IF;
RETURN V_SN;
END GET_ITEM_SN;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_ITEM_LEVEL
(
V_TBL_ID IN TN_ITM_LIST.TBL_ID%TYPE,
V_ORG_ID IN TN_ITM_LIST.ORG_ID%TYPE,
V_OBJ_VAR_ID IN TN_ITM_LIST.OBJ_VAR_ID%TYPE
)
/**********************************************************
파일명 : GET_ITM_LEVEL
버전 : 0.0.0.1
작성일 : 2006.9. 14
작성자 : 이동욱
Use Case 명 :
내 용 : 분류의 레벨값을 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_SN VARCHAR2(3);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT to_char(nvl(LVL_CO,0))
INTO V_SN
FROM TN_OBJ_ITM_CLS
WHERE TBL_ID = V_TBL_ID
AND ORG_ID = V_ORG_ID
AND OBJ_VAR_ID = V_OBJ_VAR_ID ;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. LVL_CO = ' || V_OBJ_VAR_ID);
END IF;
RETURN V_SN;
END GET_ITEM_LEVEL;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_FTN_VAL_CODE2
(
V_ORG_ID IN TN_ITM_LIST.ORG_ID%TYPE,
V_TBL_ID IN TN_ITM_LIST.TBL_ID%TYPE,
V_OBJ_VAR_ID IN VARCHAR2
)
RETURN VARCHAR2
IS
sql_stmt VARCHAR2(350);
ftn_val_at VARCHAR2(1);
RESULT VARCHAR2(40);
/**********************************************************
파일명 : GET_PRD_SMBL
버전 : 0.0.0.1
작성일 : 2006. 11. 21
작성자 : 안성관
Use Case 명 :
내 용 :
***********************************************************/
BEGIN
ftn_val_at := 'Y';
sql_stmt := 'select ITM_ID from TN_ITM_LIST where (ORG_ID, TBL_ID, OBJ_VAR_ID) IN (select ORG_ID, TBL_ID, OBJ_VAR_ID from TN_ITM_LIST where (ORG_ID, TBL_ID, ITM_ID) IN (select ORG_ID, TBL_ID, '||V_OBJ_VAR_ID||' from TN_DIM where ORG_ID =:2 and TBL_ID=:3 and rownum=1) and ORG_ID =:4 and TBL_ID=:5) and FTN_VAL_AT = :6';
BEGIN
EXECUTE IMMEDIATE sql_stmt INTO RESULT USING V_ORG_ID, V_TBL_ID, V_ORG_ID, V_TBL_ID, ftn_val_at;
--EXECUTE IMMEDIATE 'select itm_id from tn_itm_list where org_id=:1 and tbl_id=:2 and rownum=1' INTO RESULT using V_ORG_ID,V_TBL_ID;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RESULT := '13999002';
END;
RETURN RESULT;
END;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_FTN_VAL_CODE
(
V_ORG_ID IN TN_ITM_LIST.ORG_ID%TYPE,
V_TBL_ID IN TN_ITM_LIST.TBL_ID%TYPE,
V_OBJ_VAR_ID IN TN_ITM_LIST.OBJ_VAR_ID%TYPE
)
RETURN VARCHAR2
IS
RESULT VARCHAR2(40);
BEGIN
BEGIN
SELECT itm_id INTO RESULT
FROM tn_itm_list
WHERE org_id = V_ORG_ID
AND tbl_id = V_TBL_ID
AND var_lvl_co = 1
AND obj_var_id = V_OBJ_VAR_ID
AND char_itm_at='N'
AND ftn_val_at ='Y';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RESULT := '13999002';
END;
RETURN RESULT;
END;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_FTN_VAL_AT (
in_org_id IN TN_ITM_LIST.ORG_ID%TYPE,
in_tbl_id IN TN_ITM_LIST.TBL_ID%TYPE,
in_itm_id IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_OBJ_VAR_ID
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 항목코드에 대해 대상항목분류를 읽는다..
**********************************************************/
RETURN TN_ITM_LIST.FTN_VAL_AT%TYPE IS
v_result TN_ITM_LIST.FTN_VAL_AT%TYPE := NULL;
BEGIN
SELECT
FTN_VAL_AT
INTO
v_result
FROM
TN_ITM_LIST
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
ITM_ID = in_itm_id;
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RAISE;
END GET_FTN_VAL_AT;
/
CREATE OR REPLACE FUNCTION NSISUPDB.get_emp_name (
in_emp_id IN tn_emp.emp_id%TYPE,
in_org_id IN tn_emp.org_id%TYPE
)
RETURN VARCHAR2
IS
v_emp_nm VARCHAR2 (50);
/******************************************************************************
NAME: GET_EMP_NAME
버전 : 0.0.0.1
작성일 : 2006.9. 02
작성자 : 민규혁
Use Case 명 :
내 용 : 사용자명을 리턴
******************************************************************************/
BEGIN
SELECT emp_nm
INTO v_emp_nm
FROM tn_emp
WHERE emp_id = in_emp_id AND org_id = in_org_id;
IF SQL%NOTFOUND THEN
v_emp_nm := NULL ;
END IF;
RETURN v_emp_nm;
END get_emp_name;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_PRD_SE_LIST(
in_org_id IN TN_STBL_RECD_INFO.org_id%TYPE,
in_tbl_id IN TN_STBL_RECD_INFO.tbl_id%TYPE
)
/******************************************************************************
NAME : GET_PRD_SE_LIST
버전 : 0.0.0.1
작성일 : 2007.1. 16
작성자 : 이균희
Use Case 명 :
내 용 : 주기리스트를 리턴
******************************************************************************/
RETURN VARCHAR2 IS
v_prd_se VARCHAR2(20);
BEGIN
DBMS_OUTPUT.ENABLE;
select SUBSTR (MAX (SYS_CONNECT_BY_PATH (prd_se, ',')), 2) INTO v_prd_se
from (
select prd_se, ROW_NUMBER () OVER (ORDER BY prd_se) rnum from tn_stbl_recd_info where org_id = in_org_id and tbl_id = in_tbl_id
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Emp Name not found. end_prd_de = ' || v_end_prd_de);
END IF;
RETURN v_prd_se;
END GET_PRD_SE_LIST;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_PRD_NAME
(
V_CD IN TC_CD_INFO.CD_ID%TYPE,
V_LANG IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_PRD_NAME
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : 기간명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
V_NM_KOR VARCHAR2(100);
V_NM_ENG VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT DISTINCT PRD_NM, PRD_ENG_NM
INTO V_NM_KOR, V_NM_ENG
FROM TC_PRD_INFO
WHERE PRD_SE=V_CD;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. CD_ID = ' || V_CD);
END IF;
IF V_LANG = 'KOR' THEN
V_NM := V_NM_KOR;
ELSIF V_LANG = 'ENG' THEN
V_NM := V_NM_ENG;
ELSE
V_NM := '';
DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' or ''ENG (or NULL)');
END IF;
RETURN V_NM;
END GET_PRD_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_DIM_ITM_RCGN_SN
(
in_org_id IN TN_DIM.ORG_ID%TYPE,
in_tbl_id IN TN_DIM.TBL_ID%TYPE,
in_char_itm_id IN TN_DIM.ITM_RCGN_SN%TYPE,
in_ov_l1_id IN TN_DIM.OV_L1_ID%TYPE,
in_ov_l2_id IN TN_DIM.OV_L2_ID%TYPE,
in_ov_l3_id IN TN_DIM.OV_L3_ID%TYPE,
in_ov_l4_id IN TN_DIM.OV_L4_ID%TYPE,
in_ov_l5_id IN TN_DIM.OV_L5_ID%TYPE,
in_ov_l6_id IN TN_DIM.OV_L6_ID%TYPE,
in_ov_l7_id IN TN_DIM.OV_L7_ID%TYPE,
in_ov_l8_id IN TN_DIM.OV_L8_ID%TYPE
)
/**********************************************************
파일명 : GET_DIM_ITM_RCGN_SN
버전 : 0.0.0.1
작성일 : 2006. 9. 7.
작성자 : 유동명
Use Case 명 :
내 용 : 통계표 차원 항목인식번호 읽기
***********************************************************/
RETURN NUMBER IS
v_itm_rcgn_sn TN_DIM.ITM_RCGN_SN%TYPE := NULL;
BEGIN
SELECT
ITM_RCGN_SN
INTO
v_itm_rcgn_sn
FROM
TN_DIM
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
CHAR_ITM_ID = in_char_itm_id AND
OV_L1_ID = in_ov_l1_id AND
OV_L2_ID = in_ov_l2_id AND
OV_L3_ID = in_ov_l3_id AND
OV_L4_ID = in_ov_l4_id AND
OV_L5_ID = in_ov_l5_id AND
OV_L6_ID = in_ov_l6_id AND
OV_L7_ID = in_ov_l7_id AND
OV_L8_ID = in_ov_l8_id;
RETURN v_itm_rcgn_sn;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RETURN NULL;
END GET_DIM_ITM_RCGN_SN;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CODE_PUB_SE
(
V_CD_NM IN TC_CD_INFO.CD_NM%TYPE
)
/**********************************************************
파일명 : GET_CODE_PUB_SE
버전 : 0.0.0.1
작성일 : 2006.9. 15
작성자 : 이동욱
Use Case 명 :
내 용 : 코드를 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_CD_ID VARCHAR2(100);
BEGIN
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT CD_ID
INTO V_CD_ID
FROM TC_CD_INFO
WHERE CD_NM = V_CD_NM
AND UP_CD_ID='21101101';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
V_CD_ID := V_CD_NM;
END;
RETURN V_CD_ID;
END GET_CODE_PUB_SE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CODE_NAME_UPITEM
(
V_CD IN TC_CD_INFO.CD_ID%TYPE,
V_LANG IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_CODE_NAME_UPITEM
버전 : 0.0.0.1
작성일 : 2006.9. 15
작성자 : 이동욱
Use Case 명 :
내 용 : 기관명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
V_NM_KOR VARCHAR2(100);
V_NM_ENG VARCHAR2(100);
V_UPITEM VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT TRIM(CD_NM), CD_ENG_NM
INTO V_NM_KOR, V_NM_ENG
FROM TC_CD_INFO
WHERE CD_ID = V_CD;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. CD_ID = ' || V_CD);
END IF;
IF V_LANG = 'KOR' THEN
IF V_NM_KOR = '기타' THEN
SELECT CD_NM
INTO V_UPITEM
FROM TC_CD_INFO
WHERE CD_ID = (SELECT distinct UP_ITM_ID FROM TN_ITM_LIST WHERE ITM_ID = V_CD);
V_NM := V_UPITEM || '-' || V_NM_KOR ;
ELSE
V_NM := V_NM_KOR ;
END IF;
ELSIF V_LANG = 'ENG' THEN
V_NM := V_NM_ENG;
ELSE
V_NM := '';
--DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' or ''ENG (or NULL)');
END IF;
RETURN V_NM;
END GET_CODE_NAME_UPITEM;
/
CREATE OR REPLACE FUNCTION NSISUPDB.get_code_eng_name
(p_cd_id IN tc_cd_info.CD_id%TYPE) RETURN VARCHAR2 IS
v_cd_eng_nm VARCHAR2(1000);
BEGIN
SELECT CD_eng_nm
INTO v_cd_eng_nm
FROM tc_cd_info
WHERE CD_id = p_cd_id;
RETURN v_cd_eng_nm;
END get_code_eng_nAmE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.Get_Code_Cd_Name
(p_cd_id IN TC_CD_INFO.CD_id%TYPE) RETURN VARCHAR2 IS
v_cd_cd VARCHAR2(1000);
BEGIN
SELECT DECODE(SUBSTR(cd_id,1,5),'13102',SUBSTR(cd_cn,INSTR(cd_cn,'.')+1),cd_cn)
INTO v_cd_cd
FROM TC_CD_INFO
WHERE CD_id = p_cd_id;
RETURN v_cd_cd;
END Get_Code_Cd_Name;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CODE_ABBR_NAME
(
V_CD IN TC_CD_INFO.CD_ID%TYPE,
V_LANG IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_CODE_ABBR_NAME
버전 : 0.0.0.1
작성일 : 2006.11.14
작성자 : 김주관
Use Case 명 :
내 용 : 코드약어명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
V_NM_KOR VARCHAR2(100);
V_NM_ENG VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT DECODE(CD_ABBR_NM, NULL, CD_NM, CD_ABBR_NM), DECODE(CD_ABBR_ENG_NM, NULL, CD_ENG_NM, CD_ABBR_ENG_NM)
INTO V_NM_KOR, V_NM_ENG
FROM TC_CD_INFO
WHERE CD_ID = V_CD;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. CD_ID = ' || V_CD);
END IF;
IF V_LANG = 'KOR' THEN
V_NM := V_NM_KOR;
ELSIF V_LANG = 'ENG' THEN
V_NM := V_NM_ENG;
ELSE
V_NM := '';
DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' or ''ENG (or NULL)');
END IF;
RETURN V_NM;
END GET_CODE_ABBR_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CLS_PUB_SE (
in_org_id IN TN_ITM_LIST.ORG_ID%TYPE,
in_tbl_id IN TN_ITM_LIST.TBL_ID%TYPE,
in_itm_id IN TN_ITM_LIST.ITM_ID%TYPE
)
/**********************************************************
파일명 : GET_CLS_PUB_SE
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 분류의 공표구분 읽기.
미지정인 경우 기본값은 국내이며, 구해진 값 중 가장 작은 값을 반환한다.
**********************************************************/
RETURN TN_ITM_LIST.PUB_SE%TYPE IS
v_result TN_ITM_LIST.PUB_SE%TYPE;
BEGIN
v_result := 0;
SELECT
MIN(DECODE (PUB_SE, NULL, '1210113', '1210110', '1210113', PUB_SE)) PUB_SE
INTO
v_result
FROM
TN_ITM_LIST
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
OBJ_VAR_ID =
(
SELECT
OBJ_VAR_ID
FROM
TN_ITM_LIST
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id AND
ITM_ID = in_itm_id
);
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RAISE;
END GET_CLS_PUB_SE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CODE_NAME
(
V_CD IN TC_CD_INFO.CD_ID%TYPE,
V_LANG IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_CODE_NAME
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : 코드명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
V_NM_KOR VARCHAR2(100);
V_NM_ENG VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT substr(CD_NM,1,100), substr(CD_ENG_NM,1,100)
INTO V_NM_KOR, V_NM_ENG
FROM TC_CD_INFO
WHERE CD_ID = V_CD;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. CD_ID = ' || V_CD);
END IF;
IF V_LANG = 'KOR' THEN
V_NM := V_NM_KOR;
ELSIF V_LANG = 'ENG' THEN
V_NM := V_NM_ENG;
ELSE
V_NM := '';
DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' or ''ENG (or NULL)');
END IF;
RETURN V_NM;
END GET_CODE_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CLASS_P (
in_cmok_code IN VARCHAR2,
in_cname_p IN VARCHAR2
) RETURN VARCHAR2 IS
v_idx NUMBER := 1;
v_next_idx NUMBER := 1;
v_result VARCHAR2(2000) := NULL;
v_exitFlag BOOLEAN := FALSE;
v_cur_class VARCHAR2(2000) := NULL;
v_class_name VARCHAR2(2000) := NULL;
BEGIN
LOOP
v_next_idx := INSTR (in_cname_p, '*', v_idx);
EXIT WHEN v_next_idx = 0;
--DBMS_OUTPUT.PUT_lINE ('v_next_idx = ' || TO_CHAR (v_next_idx));
v_cur_class := SUBSTR (in_cname_p, v_idx, v_next_idx - v_idx);
EXIT WHEN v_cur_class = NULL;
--DBMS_OUTPUT.PUT_lINE ('v_cur_class = ' || v_cur_class);
SELECT
CD_NM
INTO
v_class_name
FROM
TC_CD_INFO
WHERE
CD_ID = v_cur_class;
v_result := v_result || v_class_name || '*';
v_idx := v_next_idx + 1;
END LOOP;
RETURN TRIM (v_result);
END GET_CLASS_P;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CELL_PRD_INFO (
in_rcgn IN TN_CELL_RECD_INFO.ITM_RCGN_SN%TYPE,
in_prd IN TN_CELL_RECD_INFO.PRD_SE%TYPE
)
/******************************************************
파일명 : GET_CELL_PRD_INFO
버전 : 0.0.0.1
작성일 : 2006. 9. 28.
작성자 : 김 은 옥
Use Case명
내 용 : 셀 수록정보의 시작/종료 시점을 읽는다.
*******************************************************/
RETURN Types.cursorType IS
v_cursor Types.cursorType;
BEGIN
OPEN v_cursor FOR
SELECT
strt_prd_de, end_prd_de
FROM
TN_CELL_RECD_INFO
WHERE
ITM_RCGN_SN = in_rcgn
AND PRD_SE = in_prd;
RETURN v_cursor;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN v_cursor;
WHEN OTHERS THEN
RAISE;
END GET_CELL_PRD_INFO;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CD_INFO_LIST (
in_cd_id IN TC_CD_INFO.CD_ID%TYPE DEFAULT NULL
)
/******************************************************
파일명 : GET_CD_INFO_LIST
버전 : 0.0.0.1
작성일 : 2006. 9. 25.
작성자 : 유동명
Use Case명 :
내 용 : 입력된 코드(in_cd_id)의 하위 코드를 다 읽는다.
*******************************************************/
RETURN Types.cursorType IS
v_cursor Types.cursorType;
BEGIN
IF in_cd_id IS NULL THEN
RAISE_APPLICATION_ERROR (-20001,'상위 코드를 지정되지 않았습니다.');
END IF;
OPEN v_cursor FOR
SELECT
CD_ID, CD_NM, CD_ENG_NM, UP_CD_ID
FROM
(
SELECT /*+ INDEX (TC_CD_INFO XAK1TC_CD_INFO) */
CD_ID, CD_NM, CD_ENG_NM, UP_CD_ID
FROM
TC_CD_INFO
WHERE
(CD_TP_SE, CD_PRT_SE) =
(
SELECT /*+ INDEX (TC_CD_INFO IDX1_TC_CD_INFO) */
DISTINCT CD_TP_SE, CD_PRT_SE
FROM
TC_CD_INFO
WHERE
UP_CD_ID = in_cd_id
)
)
CONNECT BY PRIOR CD_ID = UP_CD_ID
START WITH UP_CD_ID = in_cd_id;
RETURN v_cursor;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN v_cursor;
WHEN OTHERS THEN
RAISE;
END GET_CD_INFO_LIST;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_CD_CN
(
v_cd_tp_se TC_CD_INFO.CD_TP_SE%TYPE,
v_cd_prt_se TC_CD_INFO.CD_PRT_SE%TYPE,
v_up_cd_id TC_CD_INFO.UP_CD_ID%TYPE,
v_cd_id TC_CD_INFO.CD_ID%TYPE
)
/**********************************************************
파일명 : GET_CD_CN
버전 : 0.0.0.1
작성일 : 2006.9. 21
작성자 : 이호영
Use Case 명 :
내 용 : 상세코드를 얻는 함수
***********************************************************/
RETURN VARCHAR2 IS
v_cd_cn VARCHAR2(40);
BEGIN
--DBMS_OUTPUT.ENABLE;
--IF v_up_cd_id is null THEN
-- 전체 코드에서 타입+색인을 뺀 것이 상세코드 값이다.
v_cd_cn := REPLACE( v_cd_id, CONCAT(v_cd_tp_se,v_cd_prt_se), '');
--ELSE
-- 전체 코드에서 상위코드를 뺀 값이 상세코드 값이다.
--v_cd_cn := REPLACE( v_cd_id, v_up_cd_id, '');
--END IF;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Code Name not found. CD_ID = ' || v_cd_id);
END IF;
RETURN v_cd_cn;
END GET_CD_CN;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_WGT_CO
(
V_CD IN TN_ITM_LIST.OBJ_VAR_ID%TYPE
)
/**********************************************************
파일명 : GET_WGT_CO
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : 코드명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_WGTCO TN_ITM_LIST.WGT_CO%TYPE := 0;
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT WGT_CO
INTO V_WGTCO
FROM TN_ITM_LIST
WHERE OBJ_VAR_ID = V_CD;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched WgtCo not found. ID = ' || V_CD);
END IF;
if V_WGTCO is null then
V_WGTCO := 0;
end if;
RETURN V_WGTCO;
END GET_WGT_CO;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_USER_NAME(
in_emp_id IN tn_emp.emp_id%TYPE
)
/******************************************************************************
NAME : GET_USER_NAME
버전 : 0.0.0.1
작성일 : 2006.9. 28
작성자 : 이호영
Use Case 명 :
내 용 : 사용자명을 리턴
******************************************************************************/
RETURN VARCHAR2 IS
v_emp_nm VARCHAR2 (50);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT emp_nm INTO v_emp_nm
FROM tn_emp
WHERE emp_id = in_emp_id;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Emp Name not found. emp_nm = ' || v_emp_nm);
END IF;
RETURN v_emp_nm;
END GET_USER_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_UNIT_ABBR_NAME
(
V_CD IN TC_CD_INFO.CD_ID%TYPE
)
/**********************************************************
파일명 : GET_UNIT_ABBR_NAME
버전 : 0.0.0.1
작성일 : 2006.11.21
작성자 : 안성관
Use Case 명 :
내 용 : 단위약어명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
V_NM VARCHAR2(100);
BEGIN
BEGIN
SELECT decode(CD_ABBR_NM, NULL, CD_NM, CD_ABBR_NM)
INTO V_NM
FROM TC_CD_INFO
WHERE CD_ID = V_CD;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
V_NM := '';
END;
RETURN V_NM;
END GET_UNIT_ABBR_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_TN_ITM_LIST_FTN
(
in_org_id IN TN_STBL_INFO.ORG_ID%TYPE,
in_tbl_id IN TN_STBL_INFO.TBL_ID%TYPE,
in_obj_var_id IN TN_ITM_LIST.OBJ_VAR_ID%TYPE
)
/**********************************************************
파일명 : FN_IN_GET_OV_LVL
버전 : 0.0.0.1
작성일 : 2006. 9. 7.
작성자 : 유동명
Use Case 명 :
내 용 : 통계표 차원에 저장된 분류의 대상변수 순서
***********************************************************/
RETURN TN_ITM_LIST.ITM_ID%TYPE IS
result TN_ITM_LIST.ITM_ID%TYPE := NULL;
BEGIN
IF in_obj_var_id IS NULL THEN
RETURN NULL;
END IF;
SELECT
DECODE (MIN (ITM_ID), NULL, '13999002', MIN(ITM_ID))
INTO
result
FROM
TN_ITM_LIST
WHERE
OBJ_VAR_ID = in_obj_var_id;
RETURN result;
EXCEPTION
WHEN OTHERS THEN
RAISE;
-- RETURN NULL;
END GET_TN_ITM_LIST_FTN;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_TN_DIM_OV_LVL
(
in_org_id IN TN_STBL_INFO.ORG_ID%TYPE,
in_tbl_id IN TN_STBL_INFO.TBL_ID%TYPE,
in_obj_var_id IN TN_ITM_LIST.OBJ_VAR_ID%TYPE
)
/**********************************************************
파일명 : FN_IN_GET_OV_LVL
버전 : 0.0.0.1
작성일 : 2006. 9. 7.
작성자 : 유동명
Use Case 명 :
내 용 : 통계표 차원에 저장된 분류의 대상변수 순서
***********************************************************/
RETURN NUMBER IS
LVL NUMBER;
BEGIN
IF in_obj_var_id IS NULL THEN
RETURN NULL;
END IF;
SELECT
DISTINCT B.LVL
INTO
LVL
FROM
TN_ITM_LIST A,
(
SELECT MIN(OV_L1_ID) ITM_ID, 1 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L1_ID <> '13999002'
UNION
SELECT MIN(OV_L2_ID) ITM_ID, 2 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L2_ID <> '13999002'
UNION
SELECT MIN(OV_L3_ID) ITM_ID, 3 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L3_ID <> '13999002'
UNION
SELECT MIN(OV_L4_ID) ITM_ID, 4 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L4_ID <> '13999002'
UNION
SELECT MIN(OV_L5_ID) ITM_ID, 5 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L5_ID <> '13999002'
UNION
SELECT MIN(OV_L6_ID) ITM_ID, 6 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L6_ID <> '13999002'
UNION
SELECT MIN(OV_L7_ID) ITM_ID, 7 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L7_ID <> '13999002'
UNION
SELECT MIN(OV_L8_ID) ITM_ID, 8 LVL FROM TN_DIM WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND OV_L8_ID <> '13999002'
) B
WHERE
A.ORG_ID = in_org_id AND
A.TBL_ID = in_tbl_id AND
A.OBJ_VAR_ID = in_obj_var_id AND
A.ITM_ID = B.ITM_ID;
RETURN LVL;
EXCEPTION
WHEN OTHERS THEN
RAISE;
-- RETURN NULL;
END GET_TN_DIM_OV_LVL;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_TABLE_NAME (
V_TBL_ID TN_STBL_INFO.TBL_ID%TYPE,
V_ORG_ID TN_STBL_INFO.ORG_ID%TYPE,
V_LANG VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_TABLE_NAME
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : 언어를 구분하여 코드명을 가져온다.
***********************************************************/
RETURN VARCHAR2 IS
V_TBL_NM TN_STBL_INFO.TBL_NM%TYPE;
V_TBL_ENG_NM TN_STBL_INFO.TBL_NM%TYPE;
V_RESULT_NM TN_STBL_INFO.TBL_NM%TYPE;
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT TBL_NM, TBL_ENG_NM
INTO V_TBL_NM, V_TBL_ENG_NM
FROM TN_STBL_INFO
WHERE TBL_ID = V_TBL_ID
AND ORG_ID = V_ORG_ID;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fatched Table Name not found. TBL_ID = ' || V_TBL_ID);
END IF;
IF V_LANG = 'KOR' THEN
V_RESULT_NM := V_TBL_NM;
ELSIF V_LANG = 'ENG' THEN
V_RESULT_NM := V_TBL_ENG_NM;
ELSE
V_RESULT_NM := '';
DBMS_OUTPUT.PUT_LINE('Language option only ''KOR'' OR ''ENG (OR NULL)');
END IF;
RETURN V_RESULT_NM;
END GET_TABLE_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_SUB_STRING(
in_name IN VARCHAR2,
in_max IN INT,
in_add_str IN VARCHAR2
)
/******************************************************************************
NAME : GET_SUB_STRING
버전 : 0.0.0.1
작성일 : 2006.11. 6
작성자 : 이호영
Use Case 명 :
내 용 : 확장 subString
******************************************************************************/
RETURN VARCHAR2 IS
v_name VARCHAR2(1000) := null;
v_length INT :=0;
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT LENGTH(in_name) INTO v_length FROM DUAL;
IF v_length > in_max THEN
select SUBSTR(in_name,0,in_max-LENGTH(in_add_str))||in_add_str INTO v_name FROM DUAL;
ELSE
v_name := in_name;
END IF;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Name not found. in_name = ' || v_name);
END IF;
RETURN v_name;
END GET_SUB_STRING;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_VIEW_COUNT
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE
)
/**********************************************************
파일명 : GET_STBL_VIEW_COUNT
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 통계표의 조회 카운트를 가져온다.
***********************************************************/
RETURN VARCHAR2 IS
vResult NUMBER(10);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT count(*)
INTO vResult
FROM T_SM_LOG
WHERE TBL_ID = vTblId;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_VIEW_COUNT not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
END GET_STBL_VIEW_COUNT;
/
CREATE OR REPLACE FUNCTION NSISUPDB.get_stbl_unit_id
(p_org_id IN tn_stbl_info.org_id%TYPE, p_tbl_id IN tn_stbl_info.tbl_id%TYPE) RETURN VARCHAR2 IS v_unit_id VARCHAR2(40);
BEGIN
SELECT unit_id
INTO v_unit_id
FROM tn_stbl_info
WHERE org_id = p_org_id
AND tbl_id = p_tbl_id ;
RETURN v_unit_id;
END get_stbl_unit_id;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_RECENT_PRD
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE
)
/**********************************************************
파일명 : GET_STBL_RECENT_PRD
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 통계표의 가장 최근 입력기간을 가져온다.
단, YYYYMMDD의 형식으로 리턴한다.
***********************************************************/
RETURN VARCHAR2 IS
vResult VARCHAR2(8);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT MAX(DECODE(LENGTH(END_PRD_DE), 4, END_PRD_DE||'1231', DECODE(LENGTH(END_PRD_DE), 6, END_PRD_DE||'31', END_PRD_DE))) AS RECENT_PRD
INTO vResult
FROM TN_STBL_RECD_INFO
WHERE TBL_ID = vTblId;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_RECENT_PRD not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
END GET_STBL_RECENT_PRD;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_PUB_SE (
in_org_id IN TN_STBL_INFO.ORG_ID%TYPE,
in_tbl_id IN TN_STBL_INFO.TBL_ID%TYPE
)
/**********************************************************
파일명 : GET_STBL_PUB_SE
버전 : 0.0.0.1
작성일 : 2006. 10. 16.
작성자 : 유동명
Use Case 명 :
내 용 : 통계표의 공표구분 읽기.
**********************************************************/
RETURN TN_STBL_INFO.PUB_SE%TYPE IS
v_result TN_STBL_INFO.PUB_SE%TYPE := NULL;
BEGIN
v_result := 0;
SELECT
PUB_SE
INTO
v_result
FROM
TN_STBL_INFO
WHERE
ORG_ID = in_org_id AND
TBL_ID = in_tbl_id;
RETURN v_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN v_result;
WHEN OTHERS THEN
RAISE;
END GET_STBL_PUB_SE;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_PATH_ROOTID
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE
)
/**********************************************************
파일명 : GET_STBL_PATH_ROOTID
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 해당 통계표가 속한 목록에서 루트 ID를 가져온다.
***********************************************************/
RETURN VARCHAR2 IS
vResult VARCHAR2(8);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT MAX(DECODE(LENGTH(END_PRD_DE), 4, END_PRD_DE||'1231', DECODE(LENGTH(END_PRD_DE), 6, END_PRD_DE||'31', END_PRD_DE)))
INTO vResult
FROM TN_STBL_RECD_INFO
WHERE TBL_ID = vTblId AND ORG_ID = '214';
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_RECENT_PRD not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
END GET_STBL_PATH_ROOTID;
/
CREATE OR REPLACE FUNCTION NSISUPDB.DATE_FORMAT (
V_DATE DATE,
V_CHAR_DATE IN VARCHAR2 := NULL
)
/**********************************************************
파일명 : DATE_FORMAT
버전 : 0.0.0.1
작성일 : 2006.8. 29
작성자 : 김주관
Use Case 명 :
내 용 : DATE를 YYYY-MM-DD 포멧의 문자열로 반환한다.
***********************************************************/
RETURN VARCHAR2 IS
FORMAT_DATE VARCHAR2(20);
BEGIN
IF V_CHAR_DATE IS NULL THEN
FORMAT_DATE := TO_CHAR(V_DATE, 'YYYY-MM-DD');
ELSE
FORMAT_DATE := TO_CHAR(TO_DATE(V_CHAR_DATE,'YYYYMMDD'), 'YYYY-MM-DD');
END iF;
RETURN FORMAT_DATE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RETURN NULL;
END DATE_FORMAT;
/
CREATE OR REPLACE FUNCTION NSISUPDB.FN_CHECK_DBLINK_SYNONYM (
in_func IN VARCHAR2,
in_org_id IN TN_DBLINK_SYNM_INFO.ORG_ID%TYPE,
in_dblink_nm IN TN_DBLINK_SYNM_INFO.LINK_NM%TYPE,
in_synonym_nm IN VARCHAR2 DEFAULT NULL
) RETURN NUMBER
/**********************************************************
파일명 : FN_CHECK_DBLINK_SYNONYM
버전 : 0.0.0.1
작성일 : 2006. 10. 26.
작성자 : 유동명
Use Case 명 :
내 용 : DB Link 정보를 검사한다.
처리내용 : in_function
01 : DB Link 생성 가능 여부
in_dblink_nm과 동일한 이름을 사용하는 DB Link, Synonym이 없거나
DB Link의 TN_DBLINK_SYNM_INFO.org_id = in_org_id인 경우
02 : Synonym 생성 가능 여부
Synonym 이 없거나
DB Link의 TN_DBLINK_SYNM_INFO.org_id = in_org_id 인 경우
리턴 :
0 : DB Link, Synonym 생성 가능
1 : DB Link, Synonym 생성 불가
***********************************************************/
IS
result NUMBER := 0;
v_dblink_cnt NUMBER := 0;
v_synonym_cnt NUMBER := 0;
v_org_dblink_cnt NUMBER := 0;
BEGIN
CASE in_func
WHEN '01' THEN -- DB LINK 생성 가능 여부
--DBMS_OUTPUT.PUT_LINE ('Checking database link''s owner...');
SELECT COUNT(SYNONYM_NAME) -- SYNONYM 개수
INTO v_synonym_cnt
FROM USER_SYNONYMS
WHERE UPPER(DB_LINK) = UPPER (in_dblink_nm);
IF v_synonym_cnt > 0 THEN -- SYNONYM이 있는 경우 DBLINK의 ORG_ID 를 검사한다.
--DBMS_OUTPUT.PUT_LINE ('DBLink has Synonyms...');
SELECT COUNT(LINK_NM)
INTO v_org_dblink_cnt
FROM TN_DBLINK_SYNM_INFO
WHERE ORG_ID = in_org_id AND UPPER(LINK_NM) = UPPER(in_dblink_nm);
IF v_org_dblink_cnt = 0 THEN
result := 1;
ELSE
result := 0;
END IF;
ELSE -- SYNONYM이 없는 경우,
--DBMS_OUTPUT.PUT_LINE ('DBLink has no synonym...');
SELECT COUNT(DB_LINK) -- DB LINK 개수
INTO v_dblink_cnt
FROM USER_DB_LINKS
WHERE UPPER(DB_LINK) = UPPER(in_dblink_nm);
IF v_dblink_cnt > 0 THEN -- DBLINK가 있는 경우 DBLINK의 ORG_ID를 검사
--DBMS_OUTPUT.PUT_LINE ('DBLink is exist....');
SELECT COUNT(LINK_NM)
INTO v_org_dblink_cnt
FROM TN_DBLINK_SYNM_INFO
WHERE ORG_ID = in_org_id AND UPPER(LINK_NM) = UPPER(in_dblink_nm);
IF v_org_dblink_cnt = 0 THEN
--DBMS_OUTPUT.PUT_LINE ('different owner...');
result := 1;
ELSE
--DBMS_OUTPUT.PUT_LINE ('same owner...');
result := 0;
END IF;
ELSE
--DBMS_OUTPUT.PUT_LINE ('No dblinks...');
result := 0;
END IF;
END IF;
WHEN '02' THEN
SELECT COUNT(SYNONYM_NAME) -- SYNONYM 개수
INTO v_synonym_cnt
FROM USER_SYNONYMS
WHERE UPPER(SYNONYM_NAME) = UPPER(in_synonym_nm);
IF v_synonym_cnt > 0 THEN -- SYNONYM이 있는 경우 DBLINK의 ORG_ID 를 검사한다.
SELECT COUNT(A.LINK_NM)
INTO v_org_dblink_cnt
FROM TN_DBLINK_SYNM_INFO A, USER_SYNONYMS B
WHERE A.ORG_ID = in_org_id AND UPPER(A.LINK_NM) = UPPER(in_dblink_nm)
AND UPPER(A.LINK_NM) = UPPER (B.DB_LINK) AND B.SYNONYM_NAME = UPPER(in_synonym_nm);
IF v_org_dblink_cnt = 0 THEN
result := 1;
ELSE
result := 0;
END IF;
ELSE -- SYNONYM이 없는 경우,
result := 0;
END IF ;
ELSE
RAISE_APPLICATION_ERROR (-20001, '정의되지 않은 업무구분입니다.');
END CASE;
RETURN result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 1;
WHEN OTHERS THEN
RETURN 1;
END FN_CHECK_DBLINK_SYNONYM;
/
CREATE OR REPLACE FUNCTION NSISUPDB.FN_IN_MANAGE_TN_DT (
in_func IN VARCHAR2, -- 작업구분
in_org_id IN TN_DT.ORG_ID%TYPE, -- 조직번호
in_tbl_id IN TN_DT.TBL_ID%TYPE, -- 통계표 ID
in_char_itm_id IN TN_DIM.CHAR_ITM_ID%TYPE DEFAULT NULL, -- 표특성항목
in_ov_l1_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L1
in_ov_l2_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L2
in_ov_l3_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L3
in_ov_l4_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L4
in_ov_l5_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L5
in_ov_l6_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L6
in_ov_l7_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L7
in_ov_l8_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL, -- 대상변수 L8
in_prd_se IN TN_DT.PRD_SE%TYPE DEFAULT NULL, -- 기간구분
in_prd_de IN TN_DT.PRD_DE%TYPE DEFAULT NULL, -- 기간코드
in_dtval_co IN TN_DT.DTVAL_CO%TYPE DEFAULT 0, -- 수치값
in_dtval_cn IN TN_DT.DTVAL_CN%TYPE DEFAULT NULL, -- 문자값
in_smbl_cn IN TN_DT.SMBL_CN%TYPE DEFAULT NULL,
in_cmmt_at IN TN_DT.CMMT_AT%TYPE DEFAULT NULL, -- 주석존재여부
in_pub_se IN TN_DT.PUB_SE%TYPE DEFAULT NULL, -- 공표구분
in_lst_chn_nm IN TN_DT.LST_CHN_NM%TYPE DEFAULT NULL -- 최종변경자
/**********************************************************
파일명 : FN_IN_MANAGE_TN_DT
버전 : 0.0.0.1
작성일 : 2006. 12. 7.
작성자 : 유동명
Use Case 명 :
내 용 : 수치 데이터 입력.
in_func = '10'
기존 데이터가 있는 경우
수치값나 문자값이 NULL이 아닌 경우 UPDATE 처리
수치값과 문자값이 NULL인 경우 DELETE 처리
기존 데이터가 없는 경우
수치값나 문자값이 NULL이 아닌 경우 INSERT 처리
***********************************************************/
) RETURN VARCHAR2
IS
v_result VARCHAR2(10) := NULL;
v_itm_rcgn_sn TN_DT.ITM_RCGN_SN%TYPE;
v_count NUMBER;
BEGIN
CASE in_func
WHEN '10' THEN
SELECT ITM_RCGN_SN
INTO v_itm_rcgn_sn
FROM TN_DIM
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_ID = in_char_itm_id AND
NVL (OV_L1_ID, ' ') = NVL (in_ov_l1_id, ' ') AND
NVL (OV_L2_ID, ' ') = NVL (in_ov_l2_id, ' ') AND
NVL (OV_L3_ID, ' ') = NVL (in_ov_l3_id, ' ') AND
NVL (OV_L4_ID, ' ') = NVL (in_ov_l4_id, ' ') AND
NVL (OV_L5_ID, ' ') = NVL (in_ov_l5_id, ' ') AND
NVL (OV_L6_ID, ' ') = NVL (in_ov_l6_id, ' ') AND
NVL (OV_L7_ID, ' ') = NVL (in_ov_l7_id, ' ') AND
NVL (OV_L8_ID, ' ') = NVL (in_ov_l8_id, ' ');
--DBMS_OUTPUT.PUT_LINE ('v_itm_rcgn_sn============' || TO_CHAR(v_itm_rcgn_sn));
SELECT COUNT(PRD_DE)
INTO v_count
FROM TN_DT
WHERE ITM_RCGN_SN = v_itm_rcgn_sn AND PRD_SE = in_prd_se AND PRD_DE = in_prd_de;
IF v_count = 0 THEN
IF in_dtval_co IS NOT NULL OR in_dtval_cn IS NOT NULL THEN
INSERT INTO TN_DT (
ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID,
DTVAL_CO, DTVAL_CN, SMBL_CN, PUB_SE,
LST_CHN_DE, LST_CHN_NM
) VALUES (
v_itm_rcgn_sn, in_prd_se, in_prd_de, in_org_id, in_tbl_id,
in_dtval_co, in_dtval_cn, in_smbl_cn, GET_STBL_PUB_SE(in_org_id, in_tbl_id),
TO_CHAR(SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
);
SP_IN_UPDATE_CELL_RECD_INFO ('01', in_org_id, in_tbl_id, v_itm_rcgn_sn, in_prd_se, in_lst_chn_nm);
v_result := 'I';
ELSE
v_result := 'N';
END IF;
ELSE
IF in_dtval_co IS NOT NULL OR in_dtval_cn IS NOT NULL THEN
UPDATE TN_DT SET
DTVAL_CO = in_dtval_co,
DTVAL_CN = in_dtval_cn,
SMBL_CN = in_smbl_cn,
LST_CHN_DE = TO_CHAR(SYSDATE, 'YYYYMMDD'),
LST_CHN_NM = in_lst_chn_nm
WHERE
ITM_RCGN_SN = v_itm_rcgn_sn AND
PRD_SE = in_prd_se AND
PRD_DE = in_prd_de;
v_result := 'U';
ELSE
DELETE TN_DT WHERE
ITM_RCGN_SN = v_itm_rcgn_sn AND
PRD_SE = in_prd_se AND
PRD_DE = in_prd_de;
v_result := 'D';
SP_IN_UPDATE_CELL_RECD_INFO ('01', in_org_id, in_tbl_id, v_itm_rcgn_sn, in_prd_se, in_lst_chn_nm);
END IF;
END IF;
ELSE
v_result := 'N';
END CASE;
RETURN v_result;
END FN_IN_MANAGE_TN_DT;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_PRD_SMBL
(
V_ORG_ID IN TN_RECD_PRD.ORG_ID%TYPE,
V_TBL_ID IN TN_RECD_PRD.TBL_ID%TYPE,
V_PRD_SE IN TN_RECD_PRD.PRD_SE%TYPE,
V_PRD_DE IN TN_RECD_PRD.PRD_DE%TYPE
)
RETURN VARCHAR2
IS
RESULT VARCHAR2(5);
/**********************************************************
파일명 : GET_PRD_SMBL
버전 : 0.0.0.1
작성일 : 2006. 11. 10
작성자 : 안성관
Use Case 명 :
내 용 : 시점별 통계표부호 리턴
( p : 잠정치
e : 추정치
▽: 시계열의불연속
x : 비밀보호 )
***********************************************************/
BEGIN
BEGIN
SELECT decode(SMBL_CN, '', '', ' '||SMBL_CN||')') INTO RESULT FROM tn_recd_prd
WHERE org_id = V_ORG_ID
AND tbl_id = V_TBL_ID
AND prd_se = V_PRD_SE
AND prd_de = V_PRD_DE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RESULT := '';
END;
RETURN RESULT;
END;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_SRVC_LIST_NAME (in_vw_cd IN TN_SRVC_LIST.VW_CD%TYPE,
in_list_id IN TN_SRVC_LIST.LIST_ID%TYPE)
RETURN VARCHAR2
IS
v_srvc_list_name VARCHAR2 (100);
BEGIN
SELECT decode(list_nm,null,list_eng_nm,list_nm) INTO v_srvc_list_name
FROM TN_SRVC_LIST
WHERE VW_CD = in_vw_cd AND LIST_ID=in_list_id;
RETURN v_srvc_list_name;
END GET_SRVC_LIST_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_NAME (in_tbl_id IN tn_stbl_info.tbl_id%TYPE)
RETURN VARCHAR2
IS
v_tbl_nm VARCHAR2 (100);
BEGIN
SELECT tbl_nm
INTO v_tbl_nm
FROM tn_stbl_info
WHERE tbl_id = in_tbl_id;
RETURN v_tbl_nm;
END GET_STBL_NAME;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_LIST_PATH
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE,
vVwCd IN TN_SRVC_VW.VW_CD%TYPE := '',
vLang IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_STBL_LIST_PATH
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 통계표가 속한 목록경로 가져오기 (일단은... 하나의 로우만)
***********************************************************/
RETURN VARCHAR2 IS
vResult VARCHAR2(1000);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT GET_SERVICE_VIEW_NAME(VW_CD) || SYS_CONNECT_BY_PATH(LIST_NM, '>')
INTO vResult
FROM (
SELECT VW_CD, LIST_NM, LIST_ID, UP_LIST_ID
FROM TN_SRVC_LIST
WHERE PUB_SE IN ('1210110', '1210113', '1210114')
) A
WHERE LIST_ID IN (SELECT LIST_ID FROM TN_LIST_STBL_REL WHERE TBL_ID = vTblId AND VW_CD LIKE '%'||vVwCd||'%')
AND ROWNUM = 1
CONNECT BY PRIOR LIST_ID = UP_LIST_ID
START WITH UP_LIST_ID IS NULL;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_LIST_PATH not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
END GET_STBL_LIST_PATH;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_STBL_COMMENT
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE,
vLang IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_RECD_PRD_STRING
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 통계표주석을 하나의 컬럼으로 리턴한다.
***********************************************************/
RETURN VARCHAR2 IS
vResult VARCHAR2(30000);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT SUBSTRB(FULL_NM, -LENGTHB(FULL_NM) + 2) FULL_NM_WITH_DIV
INTO vResult
FROM
(
SELECT SYS_CONNECT_BY_PATH(CMMT_DC, ' ') FULL_NM, C_RN
FROM (
SELECT CMMT_DC, RN, LAG(RN) OVER(ORDER BY RN) P_RN,
LEAD(RN) OVER(ORDER BY RN) C_RN
FROM (
SELECT CMMT_DC, ROWNUM RN FROM
(
SELECT CMMT_DC
FROM TN_CMMT_INFO
WHERE CMMT_SE = '1210610' -- 통계표주석
AND TBL_ID = vTblId
ORDER BY LINE_SN ASC
)
)
ORDER BY RN
)
CONNECT BY PRIOR RN = P_RN
START WITH P_RN IS NULL
) T
WHERE C_RN IS NULL;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_COMMENT not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
EXCEPTION
WHEN OTHERS
THEN return '';
END GET_STBL_COMMENT;
/
CREATE OR REPLACE FUNCTION NSISUPDB.get_stat_name (in_stat_id IN tn_stat.stat_id%TYPE)
RETURN VARCHAR2
IS
v_stat_nm VARCHAR2 (100);
BEGIN
SELECT stat_nm
INTO v_stat_nm
FROM tn_stat
WHERE stat_id = in_stat_id;
RETURN v_stat_nm;
END get_stat_name;
/
CREATE OR REPLACE FUNCTION NSISUPDB.DATE_STR (
v_str IN VARCHAR2
)
/**********************************************************
파일명 : DATE_FORMAT
버전 : 0.0.0.1
작성일 : 2006.10.23
작성자 : 김주관
Use Case 명 :
내 용 : 00000000 형식의 문자를 0000/00/00 형태로 반환한다.
***********************************************************/
RETURN VARCHAR2 IS
format_str VARCHAR2(15);
v_DENIM VARCHAR2(1) := '/';
BEGIN
IF length(v_str) = 4 THEN
format_str := substr(v_str, 1);
ELSIF length(v_str) >= 6 AND length(v_str) < 8 THEN
format_str := substr(v_str, 1, 4)||v_DENIM||substr(v_str,5,2);
ELSIF length(v_str) >= 8 THEN
format_str := substr(v_str, 1, 4)||v_DENIM||substr(v_str,5,2)||v_DENIM||substr(v_str, 7);
ELSE
format_str := v_str;
END IF;
RETURN format_str;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
WHEN OTHERS THEN
RETURN 'Exception occurred';
END DATE_STR;
/
CREATE OR REPLACE FUNCTION NSISUPDB.FN_IN_CREATE_QUTRYEAR_INS
(
in_org_id IN TN_STBL_INFO.ORG_ID%TYPE,
in_tbl_id IN TN_STBL_INFO.TBL_ID%TYPE,
in_func IN VARCHAR2,
in_src_prd_se IN TN_DT.PRD_SE%TYPE,
in_cre_prd_se IN TN_DT.PRD_SE%TYPE,
in_prd_de IN TN_DT.PRD_DE%TYPE,
in_strt_prd_de IN TN_DT.PRD_DE%TYPE,
in_end_prd_de IN TN_DT.PRD_DE%TYPE,
in_lst_chn_nm IN TN_DT.LST_CHN_NM%TYPE,
in_char_itm_id IN TN_DIM.CHAR_ITM_ID%TYPE,
in_ov_l1_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL,
in_ov_l2_id IN TN_DIM.OV_L2_ID%TYPE DEFAULT NULL,
in_ov_l3_id IN TN_DIM.OV_L3_ID%TYPE DEFAULT NULL,
in_ov_l4_id IN TN_DIM.OV_L4_ID%TYPE DEFAULT NULL,
in_ov_l5_id IN TN_DIM.OV_L5_ID%TYPE DEFAULT NULL,
in_ov_l6_id IN TN_DIM.OV_L6_ID%TYPE DEFAULT NULL,
in_ov_l7_id IN TN_DIM.OV_L7_ID%TYPE DEFAULT NULL,
in_ov_l8_id IN TN_DIM.OV_L8_ID%TYPE DEFAULT NULL,
in_sm_l1_id IN TN_DIM.OV_L1_ID%TYPE DEFAULT NULL,
in_sm_l2_id IN TN_DIM.OV_L2_ID%TYPE DEFAULT NULL,
in_sm_l3_id IN TN_DIM.OV_L3_ID%TYPE DEFAULT NULL,
in_sm_l4_id IN TN_DIM.OV_L4_ID%TYPE DEFAULT NULL,
in_sm_l5_id IN TN_DIM.OV_L5_ID%TYPE DEFAULT NULL,
in_sm_l6_id IN TN_DIM.OV_L6_ID%TYPE DEFAULT NULL,
in_sm_l7_id IN TN_DIM.OV_L7_ID%TYPE DEFAULT NULL,
in_sm_l8_id IN TN_DIM.OV_L7_ID%TYPE DEFAULT NULL,
in_dec_pnt IN NUMBER DEFAULT 0,
in_proc_dec_pnt IN VARCHAR2 DEFAULT '1' -- 소수점 처리방법. 1-반올림, 2-버림
)
RETURN NUMBER
/**********************************************************
파일명 : FN_IN_CREATE_QUTRYEAR_INS
버전 : 0.0.0.1
작성일 : 2006. 9. 8.
작성자 : 유동명
Use Case 명 :
내 용 : 분기년자료를 생성한다.
대상변수 및 갯수는 앞에서부터 채워져야 한다.
대상변수 3이 NULL이면 4번이후는 모두 NULL로 간주하여 처리하지 않는다.
2006. 9. 29. 셀수록정보 수정 추가에 따른 수정
2006. 11. 10. 계산 방법 변경
선택된 분류가 아닌 선택된 최상위분류의 모든 하위 분류를 계산.
***********************************************************/
IS
v_temp NUMBER := 0;
v_itm_rcgn_sn TN_DT.ITM_RCGN_SN%TYPE := 0;
v_cursor Types.cursorType;
v_cursor_1 Types.cursorType;
v_result NUMBER := 0;
v_prd_se TN_DT.PRD_SE%TYPE := NULL;
v_prd_de TN_DT.PRD_DE%TYPE := NULL;
v_undefined_data TN_DT.DTVAL_CO%TYPE := 9999999999.99999; -- 미상자료
BEGIN
-- DBMS_OUTPUT.PUT_LINE (in_strt_prd_de || ':' || in_end_prd_de || ':' || in_prd_de || ':' || in_cre_prd_se);
-- DBMS_OUTPUT.PUT_LINE (in_char_itm_id || '::' || in_ov_l1_id || '::' || in_ov_l2_id);
CASE in_func
-- 단순합 계산
WHEN '1' THEN
-- 미상자료를 가지지 않는 항목순번의 데이터
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
DECODE (in_proc_dec_pnt, '1', ROUND(SUM (DTVAL_CO), in_dec_pnt), TRUNC (SUM (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B,
(
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
MINUS
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de AND
DTVAL_CO = v_undefined_data
) C
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.ITM_RCGN_SN = C.ITM_RCGN_SN AND
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
-- 미상자료 데이터가 1건이라도 있는 경우, 해당 자료는 무조건 미상자료로 생성된다.
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
--DECODE (in_proc_dec_pnt, '1', ROUND(SUM (DTVAL_CO), in_dec_pnt), TRUNC (SUM (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
v_undefined_data DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.DTVAL_CO = v_undefined_data AND
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
OPEN v_cursor FOR
SELECT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND PRD_SE = in_cre_prd_se AND prd_de = in_prd_de;
LOOP
FETCH v_cursor INTO v_itm_rcgn_sn;
EXIT WHEN v_cursor%NOTFOUND;
SP_IN_UPDATE_CELL_RECD_INFO ('01', in_org_id, in_tbl_id, v_itm_rcgn_sn, in_cre_prd_se, in_lst_chn_nm);
END LOOP;
-- 단순평균 계산
WHEN '2' THEN
-- 미상자료 제외하고 처리
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
DECODE (in_proc_dec_pnt, '1', ROUND(AVG(DTVAL_CO), in_dec_pnt),TRUNC (AVG (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B,
(
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
MINUS
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de AND
DTVAL_CO = v_undefined_data
) C
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.ITM_RCGN_SN = C.ITM_RCGN_SN AND
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
-- 미상자료 처리
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
--DECODE (in_proc_dec_pnt, '1', ROUND(AVG(DTVAL_CO), in_dec_pnt),TRUNC (AVG (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
v_undefined_data DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.DTVAL_CO = v_undefined_data AND -- 미상자료에 대해서만 처리
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
OPEN v_cursor FOR
SELECT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND PRD_SE = in_cre_prd_se AND prd_de = in_prd_de;
LOOP
FETCH v_cursor INTO v_itm_rcgn_sn;
EXIT WHEN v_cursor%NOTFOUND;
SP_IN_UPDATE_CELL_RECD_INFO ('01', in_org_id, in_tbl_id, v_itm_rcgn_sn, in_cre_prd_se, in_lst_chn_nm);
END LOOP;
-- 최근치 계산
WHEN '3' THEN
-- 미상자료 제외하고 처리
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
DECODE (in_proc_dec_pnt, '1', ROUND (SUM (DTVAL_CO), in_dec_pnt), TRUNC (SUM (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B,
(
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
MINUS
SELECT DISTINCT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND
PRD_SE = in_src_prd_se AND PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de AND
DTVAL_CO = v_undefined_data
) C
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.ITM_RCGN_SN = C.ITM_RCGN_SN AND
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
-- 미상자료 처리
INSERT INTO TN_DT (ITM_RCGN_SN, PRD_SE, PRD_DE, ORG_ID, TBL_ID, DTVAL_CO, PUB_SE, LST_CHN_DE, LST_CHN_NM)
SELECT /*+ INDEX (Z IDX2_TN_DIM) */
Z.ITM_RCGN_SN, in_cre_prd_se, in_prd_de, in_org_id, in_tbl_id,
Y.DTVAL_CO, GET_STBL_PUB_SE (in_org_id, in_tbl_id), TO_CHAR (SYSDATE, 'YYYYMMDD'), in_lst_chn_nm
FROM
TN_DIM Z,
(
SELECT /*+ ordered use_hash(a) use_hash(b) */
--DECODE (in_proc_dec_pnt, '1', ROUND (SUM (DTVAL_CO), in_dec_pnt), TRUNC (SUM (DTVAL_CO), in_dec_pnt)) DTVAL_CO,
v_undefined_data DTVAL_CO,
B.CHAR_ITM_ID,
DECODE (B.OV_L1_ID, NULL, in_sm_l1_id, B.OV_L1_ID) OV_L1_ID,
DECODE (B.OV_L2_ID, NULL, in_sm_l2_id, B.OV_L2_ID) OV_L2_ID,
DECODE (B.OV_L3_ID, NULL, in_sm_l3_id, B.OV_L3_ID) OV_L3_ID,
DECODE (B.OV_L4_ID, NULL, in_sm_l4_id, B.OV_L4_ID) OV_L4_ID,
DECODE (B.OV_L5_ID, NULL, in_sm_l5_id, B.OV_L5_ID) OV_L5_ID,
DECODE (B.OV_L6_ID, NULL, in_sm_l6_id, B.OV_L6_ID) OV_L6_ID,
DECODE (B.OV_L7_ID, NULL, in_sm_l7_id, B.OV_L7_ID) OV_L7_ID,
DECODE (B.OV_L8_ID, NULL, in_sm_l8_id, B.OV_L8_ID) OV_L8_ID
FROM
TN_DT A,
(
SELECT
ITM_RCGN_SN, AA.*
FROM
TN_DIM L,
(
SELECT /*+ ordered use_hash(a) use_hash(b) use_hash(c) use_hash(d) use_hash(e) use_hash(f) use_hash(g) use_hash(h) */
Z.ITM_ID CHAR_ITM_ID,
A.ITM_ID OV_L1_ID, B.ITM_ID OV_L2_ID, C.ITM_ID OV_L3_ID, D.ITM_ID OV_L4_ID,
E.ITM_ID OV_L5_ID, F.ITM_ID OV_L6_ID, G.ITM_ID OV_L7_ID, H.ITM_ID OV_L8_ID
FROM
(
SELECT ITM_ID -- 항목
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'Y' AND UP_ITM_ID IS NULL AND ITM_ID = in_char_itm_id
) Z,
(
SELECT DISTINCT
DECODE (in_ov_l1_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l1_id, NULL, NULL, UP_ITM_ID) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l1_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l1_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l1_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) A,
(
SELECT DISTINCT
DECODE(in_ov_l2_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE(in_ov_l2_id, NULL, NULL, in_ov_l2_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l2_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l2_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l2_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) B,
(
SELECT DISTINCT
DECODE (in_ov_l3_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l3_id, NULL, NULL, in_ov_l3_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l3_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l3_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l3_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) C,
(
SELECT DISTINCT
DECODE (in_ov_l4_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l4_id, NULL, NULL, in_ov_l4_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l4_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l4_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l4_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) D,
(
SELECT DISTINCT
DECODE (in_ov_l5_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l5_id, NULL, NULL, in_ov_l5_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l5_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l5_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l5_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) E,
(
SELECT DISTINCT
DECODE (in_ov_l6_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l6_id, NULL, NULL, in_ov_l6_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l6_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l6_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l6_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) F,
(
SELECT DISTINCT
DECODE (in_ov_l7_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l7_id, NULL, NULL, in_ov_l7_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l7_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l7_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l7_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) G,
(
SELECT DISTINCT
DECODE (in_ov_l8_id, NULL, NULL, ITM_ID) ITM_ID,
DECODE (in_ov_l8_id, NULL, NULL, in_ov_l8_id) UP_ITM_ID
FROM TN_ITM_LIST
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND CHAR_ITM_AT = 'N' AND
NVL (OBJ_VAR_ID, ' ') = DECODE (in_ov_l8_id, NULL, NVL (OBJ_VAR_ID, ' '), in_ov_l8_id) AND
NVL (FTN_VAL_AT, 'N') = DECODE (in_ov_l8_id, NULL, 'N', NVL (FTN_VAL_AT, 'N'))
) H
) AA
WHERE
L.ORG_ID = in_org_id AND L.TBL_ID = in_tbl_id AND
NVL (L.CHAR_ITM_ID, ' ') = NVL (AA.CHAR_ITM_ID, ' ') AND
DECODE (in_ov_l1_id, NULL, ' ', NVL (L.OV_L1_ID, ' ')) = DECODE (in_ov_l1_id, NULL, ' ', NVL (AA.OV_L1_ID, ' ')) AND
DECODE (in_ov_l2_id, NULL, ' ', NVL (L.OV_L2_ID, ' ')) = DECODE (in_ov_l2_id, NULL, ' ', NVL (AA.OV_L2_ID, ' ')) AND
DECODE (in_ov_l3_id, NULL, ' ', NVL (L.OV_L3_ID, ' ')) = DECODE (in_ov_l3_id, NULL, ' ', NVL (AA.OV_L3_ID, ' ')) AND
DECODE (in_ov_l4_id, NULL, ' ', NVL (L.OV_L4_ID, ' ')) = DECODE (in_ov_l4_id, NULL, ' ', NVL (AA.OV_L4_ID, ' ')) AND
DECODE (in_ov_l5_id, NULL, ' ', NVL (L.OV_L5_ID, ' ')) = DECODE (in_ov_l5_id, NULL, ' ', NVL (AA.OV_L5_ID, ' ')) AND
DECODE (in_ov_l6_id, NULL, ' ', NVL (L.OV_L6_ID, ' ')) = DECODE (in_ov_l6_id, NULL, ' ', NVL (AA.OV_L6_ID, ' ')) AND
DECODE (in_ov_l7_id, NULL, ' ', NVL (L.OV_L7_ID, ' ')) = DECODE (in_ov_l7_id, NULL, ' ', NVL (AA.OV_L7_ID, ' ')) AND
DECODE (in_ov_l8_id, NULL, ' ', NVL (L.OV_L8_ID, ' ')) = DECODE (in_ov_l8_id, NULL, ' ', NVL (AA.OV_L8_ID, ' '))
ORDER BY
AA.CHAR_ITM_ID, AA.OV_L1_ID, AA.OV_L2_ID
) B
WHERE
A.ITM_RCGN_SN = B.ITM_RCGN_SN AND
A.DTVAL_CO = v_undefined_data AND -- 미상자료에 대해서만 처리
A.PRD_SE = in_src_prd_se AND
A.PRD_DE BETWEEN in_strt_prd_de AND in_end_prd_de
GROUP BY
B.CHAR_ITM_ID,
B.OV_L1_ID, B.OV_L2_ID, B.OV_L3_ID, B.OV_L4_ID,
B.OV_L5_ID, B.OV_L6_ID, B.OV_L7_ID, B.OV_L8_ID
) Y
WHERE
Z.ORG_ID = in_org_id AND Z.TBL_ID = in_tbl_id AND
Z.CHAR_ITM_ID = Y.CHAR_ITM_ID AND
Y.DTVAL_CO IS NOT NULL AND
NVL (Z.OV_L1_ID, ' ') = NVL (Y.OV_L1_ID, ' ') AND
NVL (Z.OV_L2_ID, ' ') = NVL (Y.OV_L2_ID, ' ') AND
NVL (Z.OV_L3_ID, ' ') = NVL (Y.OV_L3_ID, ' ') AND
NVL (Z.OV_L4_ID, ' ') = NVL (Y.OV_L4_ID, ' ') AND
NVL (Z.OV_L5_ID, ' ') = NVL (Y.OV_L5_ID, ' ') AND
NVL (Z.OV_L6_ID, ' ') = NVL (Y.OV_L6_ID, ' ') AND
NVL (Z.OV_L7_ID, ' ') = NVL (Y.OV_L7_ID, ' ') AND
NVL (Z.OV_L8_ID, ' ') = NVL (Y.OV_L8_ID, ' ');
v_result := v_result + SQL%ROWCOUNT;
OPEN v_cursor FOR
SELECT ITM_RCGN_SN
FROM TN_DT
WHERE ORG_ID = in_org_id AND TBL_ID = in_tbl_id AND PRD_SE = in_cre_prd_se AND prd_de = in_prd_de;
LOOP
FETCH v_cursor INTO v_itm_rcgn_sn;
EXIT WHEN v_cursor%NOTFOUND;
SP_IN_UPDATE_CELL_RECD_INFO ('01', in_org_id, in_tbl_id, v_itm_rcgn_sn, in_cre_prd_se, in_lst_chn_nm);
END LOOP;
END CASE;
-- DBMS_OUTPUT.PUT_LINE ('생성 : ' || v_result);
RETURN v_result;
END FN_IN_CREATE_QUTRYEAR_INS;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_LAST_RECD_DATA(
in_org_id IN TN_STBL_RECD_INFO.org_id%TYPE,
in_tbl_id IN TN_STBL_RECD_INFO.tbl_id%TYPE
)
/******************************************************************************
NAME : GET_LAST_RECD_DATA
버전 : 0.0.0.1
작성일 : 2006.11. 22
작성자 : 이호영
Use Case 명 :
내 용 : 사용자명을 리턴
******************************************************************************/
RETURN VARCHAR2 IS
v_end_prd_de VARCHAR2 (20);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT end_prd_de || '(' || GET_PRD_NAME(PRD_SE) || ')' INTO v_end_prd_de
FROM TN_STBL_RECD_INFO
WHERE org_id = in_org_id and tbl_id = in_tbl_id and end_prd_de = (
select max(end_prd_de) from TN_STBL_RECD_INFO
WHERE org_id = in_org_id and tbl_id = in_tbl_id
) AND ROWNUM = 1;
-- SELECT max(end_prd_de) INTO v_end_prd_de
-- FROM TN_STBL_RECD_INFO
-- WHERE org_id = in_org_id
-- AND tbl_id = in_tbl_id;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('');
--DBMS_OUTPUT.PUT_LINE('Fetched Emp Name not found. end_prd_de = ' || v_end_prd_de);
END IF;
RETURN v_end_prd_de;
END GET_LAST_RECD_DATA;
/
CREATE OR REPLACE FUNCTION NSISUPDB.GET_RECD_PRD_STRING
(
vTblId IN TN_STBL_INFO.TBL_ID%TYPE,
vLang IN VARCHAR2 := 'KOR'
)
/**********************************************************
파일명 : GET_RECD_PRD_STRING
버전 : 0.0.0.1
작성일 : 2007. 05. 11
작성자 : 김주관
Use Case 명 :
내 용 : 기간명을 언어에 맞게 리턴
***********************************************************/
RETURN VARCHAR2 IS
vResult VARCHAR2(100);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT D || T || M || B || Q || H || Y || F
INTO vResult
FROM (SELECT TBL_ID, MIN (D) D, MIN (T) T, MIN (M) M, MIN (B) B, MIN (Q) Q,
MIN (H) H, MIN (Y) Y, MIN (F) F
FROM (SELECT TBL_ID,
DECODE (PRD_SE,
'D', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS D,
DECODE (PRD_SE,
'T', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS T,
DECODE (PRD_SE,
'M', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS M,
DECODE (PRD_SE,
'B', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS B,
DECODE (PRD_SE,
'Q', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS Q,
DECODE (PRD_SE,
'H', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS H,
DECODE (PRD_SE,
'Y', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS Y,
DECODE (PRD_SE,
'F', GET_PRD_NAME (PRD_SE)
|| ':'
|| DATE_STR (STRT_PRD_DE)
|| '~'
|| DATE_STR (END_PRD_DE)
|| ' '
) AS F
FROM TN_STBL_RECD_INFO
WHERE TBL_ID = vTblId)
GROUP BY TBL_ID);
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('Fetched STBL_RECD_PRD not found. TBL_ID = ' || vTblId);
END IF;
RETURN vResult;
END GET_RECD_PRD_STRING;
/