DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_IMP_MGR

Source


1 package body CZ_IMP_MGR as
2 /*  $Header: czimngrb.pls 120.0 2005/05/25 06:45:39 appldev noship $	*/
3 
4 TYPE tRunId IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
5 TYPE tName  IS TABLE OF dba_tables.table_name%TYPE INDEX BY BINARY_INTEGER;
6 -------------------------------------------
7 PROCEDURE delete_runs(p_run_id_tbl tRunId) IS
8  l_schema_owner dba_tables.owner%TYPE := 'CZ';
9  l_str          VARCHAR2(2000);
10  l_tab_name_tbl tName;
11  l_count        NUMBER:=0;
12 BEGIN
13    BEGIN
14     SELECT TO_NUMBER(VALUE) INTO CZ_IMP_MGR.BATCH_SIZE
15     FROM cz_db_settings
16     WHERE UPPER(setting_id)='BATCHSIZE';
17    EXCEPTION
18     WHEN NO_DATA_FOUND THEN
19        NULL;
20    END;
21    l_tab_name_tbl.DELETE;
22    SELECT table_name BULK COLLECT INTO l_tab_name_tbl
23    FROM dba_tables
24    WHERE table_name like 'CZ_IMP%' AND owner = UPPER(l_schema_owner);
25    IF p_run_id_tbl.COUNT > 0 THEN
26      FOR i IN p_run_id_tbl.FIRST..p_run_id_tbl.LAST LOOP
27        FOR j IN l_tab_name_tbl.FIRST..l_tab_name_tbl.LAST LOOP
28          l_str := 'DELETE FROM '||l_tab_name_tbl(j) || ' WHERE run_id = :1';
29          EXECUTE IMMEDIATE l_str USING p_run_id_tbl(i);
30          l_count := l_count + SQL%ROWCOUNT;
31          IF l_count >= BATCH_SIZE THEN
32          COMMIT;
33            l_count := 0;
34          END IF;
35        END LOOP;
36        l_str := 'DELETE FROM cz_xfr_run_results WHERE run_id = :1';
37        EXECUTE IMMEDIATE l_str USING p_run_id_tbl(i);
38        l_str := 'DELETE FROM cz_xfr_run_infos WHERE run_id = :1';
39        EXECUTE IMMEDIATE l_str USING p_run_id_tbl(i);
40      END LOOP;
41    END IF;
42    COMMIT;
43 END delete_runs;
44 -------------------------------------------
45 PROCEDURE purge
46 IS
47  l_schema_owner dba_tables.owner%TYPE := 'CZ';
48  l_error      BOOLEAN;
49 BEGIN
50    CZ_ADMIN.SPX_SYNC_IMPORTSESSIONS;
51    DBMS_APPLICATION_INFO.SET_MODULE('CZIMPORT','');
52    FOR i IN (SELECT table_name FROM dba_tables WHERE table_name like 'CZ_IMP%' AND owner = UPPER(l_schema_owner)) LOOP
53      EXECUTE IMMEDIATE 'TRUNCATE TABLE '||l_schema_owner||'.'|| i.table_name;
54    END LOOP;
55    EXECUTE IMMEDIATE 'TRUNCATE TABLE '||l_schema_owner||'.'||'CZ_XFR_RUN_INFOS';
56    EXECUTE IMMEDIATE 'TRUNCATE TABLE '||l_schema_owner||'.'||'CZ_XFR_RUN_RESULTS';
57    COMMIT;
58    DBMS_APPLICATION_INFO.SET_MODULE('','');
59 EXCEPTION
60  WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
61    l_error := cz_utils.log_report(cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS'),1,'CZ_IMP_MGR.PURGE',11276);
62    RAISE;
63  WHEN OTHERS THEN
64    l_error:=cz_utils.log_report(SQLERRM,1,'CZ_IMP_MGR.PURGE',11276);
65    DBMS_APPLICATION_INFO.SET_MODULE('','');
66    RAISE;
67 END purge;
68 -------------------------------------------
69 PROCEDURE purge_to_date(p_days IN NUMBER)
70 IS
71  l_run_id_tbl   tRunId;
72  l_error        BOOLEAN;
73 BEGIN
74    CZ_ADMIN.SPX_SYNC_IMPORTSESSIONS;
75    DBMS_APPLICATION_INFO.SET_MODULE('CZIMPORT','');
76    l_run_id_tbl.DELETE;
77    SELECT run_id BULK COLLECT INTO l_run_id_tbl
78    FROM cz_xfr_run_infos
79    WHERE TRUNC(started) < (SELECT TRUNC(SYSDATE) - p_days  FROM DUAL);
80    IF (l_run_id_tbl.COUNT > 0) THEN
81      delete_runs(l_run_id_tbl);
82    END IF;
83    DBMS_APPLICATION_INFO.SET_MODULE('','');
84 EXCEPTION
85  WHEN NO_DATA_FOUND THEN
86    DBMS_APPLICATION_INFO.SET_MODULE('','');
87  WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
88    l_error := cz_utils.log_report(cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS'),1,'CZ_IMP_MGR.PURGE',11276);
89    RAISE;
90  WHEN OTHERS THEN
91    l_error:=cz_utils.log_report(SQLERRM,1,'CZ_IMP_MGR.PURGE_to_date',11276);
92    DBMS_APPLICATION_INFO.SET_MODULE('','');
93    RAISE;
94 END purge_to_date;
95 -------------------------------------------
96 PROCEDURE purge_to_runid(p_run_id IN NUMBER)
97 IS
98  l_run_id_tbl   tRunId;
99  l_error        BOOLEAN;
100 BEGIN
101    CZ_ADMIN.SPX_SYNC_IMPORTSESSIONS;
102    DBMS_APPLICATION_INFO.SET_MODULE('CZIMPORT','');
103    l_run_id_tbl.DELETE;
104    SELECT run_id BULK COLLECT INTO l_run_id_tbl
105    FROM cz_xfr_run_infos
106    WHERE run_id <= p_run_id;
107    IF (l_run_id_tbl.COUNT > 0) THEN
108      delete_runs(l_run_id_tbl);
109    END IF;
110    DBMS_APPLICATION_INFO.SET_MODULE('','');
111 EXCEPTION
112  WHEN NO_DATA_FOUND THEN
113    DBMS_APPLICATION_INFO.SET_MODULE('','');
114  WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
115    l_error := cz_utils.log_report(cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS'),1,'CZ_IMP_MGR.PURGE',11276);
116    RAISE;
117  WHEN OTHERS THEN
118    l_error:=cz_utils.log_report(SQLERRM,1,'CZ_IMP_MGR.PURGE_TO_RUNID',11276);
119    DBMS_APPLICATION_INFO.SET_MODULE('','');
120    RAISE;
121 END purge_to_runid;
122 -------------------------------------------
123 PROCEDURE purge_cp(errbuf  IN OUT NOCOPY VARCHAR2,
124 		   retcode IN OUT NOCOPY pls_integer) IS
125 BEGIN
126    retcode := G_CONCURRENT_SUCCESS;
127    purge;
128 EXCEPTION
129   WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
130      retcode := G_CONCURRENT_ERROR;
131      errbuf := cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS');
132   WHEN OTHERS THEN
133      retcode := G_CONCURRENT_ERROR;
134      errbuf := cz_utils.get_text('CZ_PURGE_FATAL_ERR', 'SQLERRM',Sqlerrm);
135      DBMS_APPLICATION_INFO.SET_MODULE('','');
136 END purge_cp;
137 -------------------------------------------
138 PROCEDURE purge_to_date_cp(errbuf    IN OUT NOCOPY VARCHAR2,
139                            retcode   IN OUT NOCOPY pls_integer,
140                            p_days    IN            NUMBER) IS
141 BEGIN
142    retcode := G_CONCURRENT_SUCCESS;
143    purge_to_date(p_days);
144 EXCEPTION
145   WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
146      retcode := G_CONCURRENT_ERROR;
147      errbuf := cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS');
148   WHEN OTHERS THEN
149      retcode := G_CONCURRENT_ERROR;
150      errbuf := cz_utils.get_text('CZ_PURGE_FATAL_ERR', 'SQLERRM',Sqlerrm);
151      DBMS_APPLICATION_INFO.SET_MODULE('','');
152 END purge_to_date_cp;
153 -------------------------------------------
154 PROCEDURE purge_to_runid_cp(errbuf    IN OUT NOCOPY VARCHAR2,
155 		            retcode   IN OUT NOCOPY pls_integer,
156                             p_run_id  IN            NUMBER) IS
157 BEGIN
158    retcode := G_CONCURRENT_SUCCESS;
159    purge_to_runid(p_run_id);
160 EXCEPTION
161   WHEN CZ_ADMIN.IMP_ACTIVE_SESSION_EXISTS THEN
162      retcode := G_CONCURRENT_ERROR;
163      errbuf := cz_utils.get_text('CZ_IMP_ACTIVE_SESSION_EXISTS');
164   WHEN OTHERS THEN
165      retcode := G_CONCURRENT_ERROR;
166      errbuf := cz_utils.get_text('CZ_PURGE_FATAL_ERR', 'SQLERRM',Sqlerrm);
167      DBMS_APPLICATION_INFO.SET_MODULE('','');
168 END purge_to_runid_cp;
169 
170 END CZ_IMP_MGR;