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>
3270 lines
107 KiB
MySQL
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;
|
|
/
|
|
|
|
|