0% found this document useful (0 votes)
11 views27 pages

03 PKB P88 F885 STA Log

6

Uploaded by

Raja Rangasamy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views27 pages

03 PKB P88 F885 STA Log

6

Uploaded by

Raja Rangasamy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 27

SQL> --------------------------------------------------------

SQL> -- File created - 2020-08-13


SQL> -- Created by: INDRA
SQL> --------------------------------------------------------
SQL>
SQL> SET TIMI ON
SQL> SET ECHO ON
SQL> SET FEEDB ON
SQL> DEFINE var1 = "TDMI_STA.";
SQL> SPOOL 07_PKB_P88_F885_STA_LOG.log;
SQL>
SQL> --------------------------------------------------------
SQL> -- DDL for Package Body PKG_P88_885_REN_FTP
SQL> --------------------------------------------------------
SQL> create or replace PACKAGE BODY &var1."PKG_P88_885_REN_FTP" AS
2
3
4 /* ------------------------------
5 Global Variables Declaration
6 ------------------------------ */
7 vgID_PROCESS_EXEC_LOG NUMBER;
8 vgID_user NUMBER;
9 vgID_PROC NUMBER;
10 vgORIGEM VARCHAR(884):= 'PKG_P88_885_REN_FTP';
11 vgID_SOURCE NUMBER;
12 vgDATE_CONTEXT DATE;
13
14 vgID_SOURCE_EXEC_LOG NUMBER;
15 vgROWS_COLLECTED NUMBER;
16 vgROWS_PROCESSED NUMBER;
17 vgDATE_TIME_SS_MASK VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SS';
18 vgID_TEMPLATE_EXEC_LOG NUMBER;
19
20 vgDATE_MASK VARCHAR2(10) := 'DD/MM/YYYY';
21 vgDATE_MASK1 VARCHAR2(10) := 'YYYY-MM-DD';
22 vgDATE_TIME_MASK0 VARCHAR2(32) := 'DD/MM/YYYY HH24:MI';
23 vgDATE_TIME_MASK1 VARCHAR2(32) := 'YYYY-MM-DD HH24:MI:SS';
24 vgDATE_TIME_MASK VARCHAR(30) := 'YYYY-MM-DD"T"HH24:MI.ff3"Z"';
25 --vgDATE_TIME_MASK2 VARCHAR(35) := 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"';
26 vgNUMBER_MASK VARCHAR2(50) :=
'999999999999999.99999999999999999999999999999';
27 vgNUMBER_MASK_SCI VARCHAR(50) := '9.99999999999999999999EEEE';
28 vgFILENAME_CONTEXT VARCHAR2(50);
29 vgFILE_VERSION NUMBER;
30
31 vgDATE_MASK6 VARCHAR2(50) := 'YYYY-MON-DD"T"HH24:MI:SSTZH:TZM';
32 vgDATE_MASK5 VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM';
33 vgDATE_MASK2 VARCHAR2(20) := 'YYYYMMDDHH24TZH:TZM';
34 vgDATE_MASK3 VARCHAR2(10) := 'YYYYMMDD';
35 vgDATE_MASK4 VARCHAR2(10) := 'YYYY-MM-DD';
36
37 -- -----------------------------------------------------------------
38 -- Autor : INDRA
39 -- Date : 20181119
40 -- Description: Load Global Parameters
41 -- ----------------------------------------------------------------
42
43 PROCEDURE LOAD_GLOBAL_VALUES(iLOG_PROC IN NUMBER, iPROC IN NUMBER, iuser IN
NUMBER, iSOURCE IN NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, oRESULT_OUT OUT
NUMBER) AS
44 BEGIN
45
46 vgID_PROCESS_EXEC_LOG := iLOG_PROC;
47 vgID_SOURCE:= iSOURCE;
48 vgID_user := iuser;
49 vgID_PROC :=iPROC;
50 vgDATE_CONTEXT := iDATE;
51 vgFILENAME_CONTEXT := iFilename;
52 vgFILE_VERSION := to_number(substr(iFilename,instr(iFilename,'.')+1));
53 oRESULT_OUT := 0;
54
55 EXCEPTION
56 WHEN OTHERS THEN
57
58 PKG_LOG.INSERT_DETAIL_EXEC_LOG( iLOG_PROC, vgID_TEMPLATE_EXEC_LOG,
vgID_SOURCE_EXEC_LOG, vgORIGEM || '.LOAD_GLOBAL_VALUES', 'ERROR - Not expected',
'ERROR', iuser, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000), CONCAT(CONCAT('ERROR_STACK:
',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('. ERROR_BACKTRACE: ',
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
59 oRESULT_OUT := 1;
60
61 END LOAD_GLOBAL_VALUES;
62
63 -- -----------------------------------------------------------------
64 -- Autor : INDRA
65 -- Date : 20181119
66 -- Description: Master Process
67 -- ----------------------------------------------------------------
68 PROCEDURE MASTER_PROCESS(iINPUT TP_TAB_P88_885_REN_FTP, iID_PROCESS_EXEC IN
NUMBER, iID_SOURCE_EXEC IN NUMBER, iPROC IN NUMBER, iuser IN NUMBER, iSOURCE IN
NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, iCOLLECTED_DATA_FROM IN DATE,
iCOLLECTED_DATA_TO IN DATE, oRESULT_OUT OUT NUMBER) AS
69 vRESULT_OUT NUMBER;
70 vINPUT_DATA VARCHAR2(2048) := 'ID_PROCESS_EXEC: ' || iID_PROCESS_EXEC
|| ', ID PROC: ' || iPROC || ', user: ' || iuser || ', ID_SOURCE: ' || iSOURCE ||
', COLLECTED_DATA_FROM: ' || iCOLLECTED_DATA_FROM || ', To: ' ||
iCOLLECTED_DATA_TO;
71 vORIGEM VARCHAR(200) := vgORIGEM || '.MASTER_PROCESS';
72 vCHECK_CONTEXT NUMBER;
73 vCONTEXT_RESULT_CODE NUMBER;
74 BEGIN
75 IF iID_SOURCE_EXEC IS NULL THEN
76 --Insert log into LOG_SOURCE table
77 PKG_LOG.INSERT_SOURCE_LOG(iID_PROCESS_EXEC,
iSOURCE ,iuser,iCOLLECTED_DATA_FROM, iCOLLECTED_DATA_TO, null,
vgID_SOURCE_EXEC_LOG);
78 ELSE
79 vgID_SOURCE_EXEC_LOG := iID_SOURCE_EXEC;
80 END IF;
81
82 vRESULT_OUT := 1;
83 vCHECK_CONTEXT := 1;
84 vCONTEXT_RESULT_CODE := 0;
85
86 SELECT NVL(ID_TEMPLATE_EXEC_LOG, 1) INTO vgID_TEMPLATE_EXEC_LOG FROM
TDMI_STA.LOG_PROCESS_EXEC WHERE ID = iID_PROCESS_EXEC;
87
88 --Insert a INFO log into LOG_DETAIL_EXEC table
89 PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'Start Source Process',
'INFO', iuser, vINPUT_DATA, null ,null,null);
90
91 -- load global parameters
92 LOAD_GLOBAL_VALUES(iID_PROCESS_EXEC, iPROC, iuser, iSOURCE, iDATE,
iFilename, vRESULT_OUT);
93
94 IF vRESULT_OUT = 0 THEN
95 -- STG Process
96 STG_INSERT_DATA (iINPUT, vRESULT_OUT);
97
98 IF vRESULT_OUT = 0 THEN
99 ODS_PROCESS (vRESULT_OUT);
100 END IF;
101 END IF;
102
103 oRESULT_OUT := vRESULT_OUT;
104
105 IF oRESULT_OUT = 1 THEN
106 --remove from context
107 --TDMI_STA.PKG_P88_CTX.REMOVE_CTX(iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, iuser, iSOURCE, vgDATE_CONTEXT,
vgFILENAME_CONTEXT, NULL, vCONTEXT_RESULT_CODE);
108
109 -- Insert error msg
110 PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
111 PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - End source process
with error', 'ERROR', iuser, vINPUT_DATA,null, null, null);
112 ELSIF (oRESULT_OUT = 0) THEN
113 --Update log into LOG_SOURCE table
114 PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,1);
115
116 --Insert a INFO log into LOG_DETAIL_EXEC table
117 PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End Source Process',
'INFO', iuser, vINPUT_DATA, null ,null, null);
118 END IF;
119
120 EXCEPTION
121 WHEN OTHERS THEN
122 PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - Not expected',
'ERROR', iuser, vINPUT_DATA,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
123 --PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
124 oRESULT_OUT := 1;
125 ROLLBACK;
126
127 END MASTER_PROCESS;
128
129 -- -----------------------------------------------------------------
130 -- Autor : INDRA
131 -- Date : 20181119
132 -- Description: Insert Data to STG
133 -- ----------------------------------------------------------------
134 PROCEDURE STG_INSERT_DATA(iINPUT TP_TAB_P88_885_REN_FTP, oRESULT_OUT OUT
NUMBER) AS
135
136 PRAGMA AUTONOMOUS_TRANSACTION;
137 vORIGEM VARCHAR(200) := vgORIGEM || '.STG_INSERT_DATA';
138 bulk_errors EXCEPTION;
139 PRAGMA EXCEPTION_INIT(bulk_errors, -24381);
140
141
142 BEGIN
143
144 vgROWS_COLLECTED := 0;
145
146 IF iINPUT.FIRST IS NULL THEN
147 --Insert a INFO log into LOG_DETAIL_EXEC table
148 PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End STG Process - No data
found to Process', 'ALERT', vgID_user, null, null ,null,null);
149 ELSE
150 BEGIN
151 --Insert a INFO log into LOG_DETAIL_EXEC table
152
153 PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'STG Processing', 'INFO',
vgID_user, null, null ,null,null);
154
155 -- INSERT ALL DATA INTO STG TABLE
156 FORALL i IN iINPUT.first .. iINPUT.last
157 INSERT INTO TDMI_STA.DT_STG_P88_885_REN_FTP
158 (
159 ID_EXEC,
160 ID_EXEC_SOURCE,
161 FILENAME,
162 YEAR_FILE,
163 MONTH_FILE,
164 DAY_FILE,
165 PERIOD,
166 SESSION_FILE,
167 PHYSICAL_UNIT,
168 POWER_FILE,
169 FILE_TIMESTAMP,
170 STG_LOAD_INDICATOR,
171 ODS_LOAD_INDICATOR,
172 HIST_LOAD_INDICATOR,
173 MFK,
174 CREATED_BY,
175 CREATED_ON,
176 CREATED_PROCESS,
177 UPDATED_BY,
178 UPDATED_ON,
179 UPDATED_PROCESS
180 )
181 VALUES
182 (
183 vgID_PROCESS_EXEC_LOG,
184 vgID_SOURCE_EXEC_LOG,
185 vgFILENAME_CONTEXT,
186 iINPUT(i).YEAR_FILE,
187 iINPUT(i).MONTH_FILE,
188 iINPUT(i).DAY_FILE,
189 iINPUT(i).PERIOD,
190 iINPUT(i).SESSION_FILE,
191 iINPUT(i).PHYSICAL_UNIT,
192 iINPUT(i).POWER_FILE,
193 iINPUT(i).FILE_TIMESTAMP,
194 1,
195 0,
196 0,
197 0,
198 vgID_user,
199 SYSTIMESTAMP,
200 vgID_PROC,
201 vgID_user,
202 SYSTIMESTAMP,
203 vgID_PROC
204 );
205 COMMIT;
206 EXCEPTION
207 WHEN bulk_errors THEN
208 oRESULT_OUT := 1;
209
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
210 ROLLBACK;
211 END;
212
213 END IF;
214 oRESULT_OUT := 0;
215
216 vgROWS_COLLECTED := iINPUT.COUNT;
217
218 -- IF SOMETHING FAILS, ALL IS CANCELED AND RETURN 1
219 EXCEPTION
220 /*WHEN bulk_errors THEN
221 oRESULT_OUT := 1;
222 PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));*/
223 WHEN OTHERS THEN
224 oRESULT_OUT := 1;
225 PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process
error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
226 ROLLBACK;
227 END STG_INSERT_DATA;
228
229 -- -----------------------------------------------------------------
230 -- Autor : INDRA
231 -- Date : 20181119
232 -- Description: ODS_PROCESS
233 -- ----------------------------------------------------------------
234 PROCEDURE ODS_PROCESS(oRESULT_OUT OUT NUMBER) AS
235 PRAGMA AUTONOMOUS_TRANSACTION;
236
237 CURSOR CCHAVE_PROCESSAMENTO IS
238 SELECT DISTINCT ID_EXEC,
239 ID_EXEC_SOURCE,
240 FILENAME
241 FROM DT_STG_P88_885_REN_FTP -- base de dados STA
242 WHERE STG_LOAD_INDICATOR = 1
243 AND ODS_LOAD_INDICATOR = 0
244 AND MFK = 0
245 AND ID_EXEC = vgID_PROCESS_EXEC_LOG
246 AND ID_EXEC_SOURCE= vgID_SOURCE_EXEC_LOG;
247
248 iID_EXEC NUMBER;
249 iID_EXEC_SOURCE NUMBER;
250 vData VARCHAR2(125);
251 vINPUT_DATA VARCHAR2(884) := 'Source: ' || vgID_SOURCE;
252 vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_PROCESS';
253 vAUX_RESULT_OUT NUMBER;
254 vAUX_ROWS_PROCESSED NUMBER;
255 vFilename VARCHAR2(50);
256 -- vOra NUMBER;
257
258 BEGIN
259 oRESULT_OUT := 0;
260 vAUX_RESULT_OUT := 0;
261 vAUX_ROWS_PROCESSED := 0;
262 --Start ODS Process
263 --Insert a INFO log into LOG_DETAIL_EXEC table
264 PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ODS Processing', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);
265
266
267 OPEN cCHAVE_PROCESSAMENTO;
268 LOOP
269 FETCH cCHAVE_PROCESSAMENTO INTO iID_EXEC, iID_EXEC_SOURCE,
vFilename;
270
271 EXIT WHEN cCHAVE_PROCESSAMENTO%NOTFOUND;
272
273 ODS_INSERT_DATA (iID_EXEC, iID_EXEC_SOURCE, vgID_SOURCE,
vFilename, oRESULT_OUT);
274
275 vAUX_ROWS_PROCESSED := vAUX_ROWS_PROCESSED + vgROWS_PROCESSED;

276
277
278 IF vAUX_RESULT_OUT = 1 THEN
279 oRESULT_OUT := 1;
280 ELSE vAUX_RESULT_OUT := oRESULT_OUT;
281
282 END IF;
283
284 END LOOP;
285 CLOSE cCHAVE_PROCESSAMENTO;
286
287 vgROWS_PROCESSED := vAUX_ROWS_PROCESSED;
288 --Insert a INFO log into LOG_DETAIL_EXEC table
289 PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End ODS process', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);
290
291
292 EXCEPTION
293 WHEN OTHERS THEN
294 PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS process
error.', 'ERROR', vgID_user, vINPUT_DATA , SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
295 oRESULT_OUT := 1;
296 ROLLBACK;
297 END ODS_PROCESS;
298
299 -- -----------------------------------------------------------------
300 -- Autor : INDRA
301 -- Date : 20181119
302 -- Description: LOAD DATA TO ODS
303 -- ----------------------------------------------------------------
304 PROCEDURE ODS_INSERT_DATA(iID_EXEC IN NUMBER, iID_EXEC_SOURCE IN NUMBER,
iID_SOURCE IN NUMBER, iFilename IN VARCHAR2, oRESULT_OUT OUT NUMBER) -- iOra IN
NUMBER,
305 AS PRAGMA AUTONOMOUS_TRANSACTION;
306
307 vINPUT_DATA VARCHAR2(2048) := 'Execution ID: ' || iID_EXEC || ' - Execution
Source ID: ' || iID_EXEC_SOURCE || ' - Source: ' || iID_SOURCE || ' - Filename: '
|| iFilename; -- || ' - Hora: ' || iOra;
308
309 VEXIT_NOW exception;
310 vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_INSERT_DATA';
311 vDATE DATE;
312 vFILE_VERSION NUMBER;
313 vLAST_FILE NUMBER;
314 vDate_aux VARCHAR2(50);
315 oRESULT_CODE NUMBER;
316 oRESULT_MSG VARCHAR2(1000);
317
318 vAux1 NUMBER;
319
320 BEGIN
321 vAux1 := INSTR(iFilename,'_', 1, 1)+1;
322 vDate_aux := SUBSTR(iFilename, vAux1, 8 );
323 vDate := TO_DATE(vDate_aux, 'YYYYMMDD');
324
325 oRESULT_OUT := 0;
326
327 -- Delete existing data for same parameters
328 DELETE FROM TDMI_ODS.DT_P88_885_REN_FTP
329 WHERE FILENAME = iFilename;
330
331 COMMIT;
332
333 SELECT MAX(VERSION) INTO vFILE_VERSION
334 FROM TDMI_ODS.DT_P88_885_REN_FTP
335 WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) || '%';
336
337 if(vFILE_VERSION <= vgFILE_VERSION or vFILE_VERSION is null) THEN
338
339 vLAST_FILE := 1;
340
341 UPDATE TDMI_ODS.DT_P88_885_REN_FTP
342 SET LAST_VERSION = 0
343 WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) ||
'%' and VERSION != vgFILE_VERSION;
344 ELSE
345
346 vLAST_FILE := 0;
347 END IF;
348
349 -- Bulk insert data
350 INSERT INTO TDMI_ODS.DT_P88_885_REN_FTP
351 SELECT
352 TDMI_ODS.SEQ_P88_885_REN_FTP.NEXTVAL,
353 FILENAME,
354 to_date(concat(concat(concat(concat(YEAR_FILE, '-'), MONTH_FILE),
'-'), DAY_FILE),vgDATE_MASK1),
355 to_number(PERIOD),
356 to_number(SESSION_FILE),
357 PHYSICAL_UNIT,
358 GET_PHYSICAL_UNIT_ID("PHYSICAL_UNIT",vDate),
359 TO_NUMBER(POWER_FILE),
360 vgFILE_VERSION,
361 vLAST_FILE,
362 to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 / 1000) *
to_number(FILE_TIMESTAMP),
363 vgID_user, -- created by
364 CURRENT_TIMESTAMP, -- created on
365 vgID_PROC, -- created process
366 vgID_user, -- updated by
367 CURRENT_TIMESTAMP, -- updated on
368 vgID_PROC -- updated process
369 FROM
370 TDMI_STA.DT_STG_P88_885_REN_FTP
371 WHERE ID_EXEC = iID_EXEC
372 AND ID_EXEC_SOURCE = iID_EXEC_SOURCE
373 AND FILENAME = iFilename
374 AND SESSION_FILE = CEIL(to_number(PERIOD)/4)
375 AND stg_load_indicator = 1
376 AND ods_load_indicator = 0
377 AND MFK = 0;
378
379 vgROWS_PROCESSED := SQL%ROWCOUNT;
380
381 UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
382 SET A.ods_load_indicator = 1
383 WHERE A.ID_EXEC = iID_EXEC
384 AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
385 AND FILENAME = iFilename;
386
387
388 PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'vgROWS_PROCESSED - ' ||
vgROWS_PROCESSED, 'DEBUG', vgID_user, vINPUT_DATA, NULL, NULL, NULL);
389
390 -- PKG_P88_CTX.ADD_CONTEXT(iID_EXEC,
391 -- iID_EXEC_SOURCE,
392 -- 88,
393 -- iID_SOURCE,
394 --
to_date(substr(iFilename,instr(iFilename,'_')+1,8),vgDATE_MASK3), --
filenameDate
395 --
substr(iFilename,instr(iFilename,'.')+1), --file_version
396 -- iFilename,
397 -- oRESULT_CODE);
398 PKG_P157_CTX.INSERT_CTX(iID_SOURCE, iFilename, oRESULT_CODE,
oRESULT_MSG);
399 COMMIT;
400 oRESULT_OUT := 0;
401
402 EXCEPTION
403 WHEN OTHERS THEN
404 PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS Processing -
End Insert with Error', 'ERROR', vgID_user, vINPUT_DATA ,SQLCODE, SUBSTR(SQLERRM,
1, 4000), CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
405 oRESULT_OUT := 1;
406 ROLLBACK;
407
408 UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
409 SET A.MFK = 1
410 WHERE A.ID_EXEC = iID_EXEC
411 AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
412 AND FILENAME = iFilename;
413 COMMIT;
414 END ODS_INSERT_DATA;
415
416 FUNCTION GET_PHYSICAL_UNIT_ID(iPHYSICAL_UNIT IN VARCHAR2, iDate IN DATE)
RETURN NUMBER IS
417 vPHYSICAL_UNIT_ID NUMBER;
418 BEGIN
419
420 SELECT A.ID
421 INTO vPHYSICAL_UNIT_ID
422 FROM TDMI_ODS.LOV_UNIDADE_FISICA A
423 WHERE A.UNIDADE_FISICA = iPHYSICAL_UNIT
424 AND A.DT_INICIO <= iDATE
425 AND A.DT_FIM >= iDATE;
426
427 RETURN vPHYSICAL_UNIT_ID;
428
429 EXCEPTION
430 WHEN OTHERS THEN
431 RETURN 0;
432 END GET_PHYSICAL_UNIT_ID;
433
434
435
436 END PKG_P88_885_REN_FTP;
437
438 /
old:create or replace PACKAGE BODY &var1."PKG_P88_885_REN_FTP" AS

/* ------------------------------
Global Variables Declaration
------------------------------ */
vgID_PROCESS_EXEC_LOG NUMBER;
vgID_user NUMBER;
vgID_PROC NUMBER;
vgORIGEM VARCHAR(884):= 'PKG_P88_885_REN_FTP';
vgID_SOURCE NUMBER;
vgDATE_CONTEXT DATE;

vgID_SOURCE_EXEC_LOG NUMBER;
vgROWS_COLLECTED NUMBER;
vgROWS_PROCESSED NUMBER;
vgDATE_TIME_SS_MASK VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SS';
vgID_TEMPLATE_EXEC_LOG NUMBER;

vgDATE_MASK VARCHAR2(10) := 'DD/MM/YYYY';


vgDATE_MASK1 VARCHAR2(10) := 'YYYY-MM-DD';
vgDATE_TIME_MASK0 VARCHAR2(32) := 'DD/MM/YYYY HH24:MI';
vgDATE_TIME_MASK1 VARCHAR2(32) := 'YYYY-MM-DD HH24:MI:SS';
vgDATE_TIME_MASK VARCHAR(30) := 'YYYY-MM-DD"T"HH24:MI.ff3"Z"';
--vgDATE_TIME_MASK2 VARCHAR(35) := 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"';
vgNUMBER_MASK VARCHAR2(50) :=
'999999999999999.99999999999999999999999999999';
vgNUMBER_MASK_SCI VARCHAR(50) := '9.99999999999999999999EEEE';
vgFILENAME_CONTEXT VARCHAR2(50);
vgFILE_VERSION NUMBER;

vgDATE_MASK6 VARCHAR2(50) := 'YYYY-MON-DD"T"HH24:MI:SSTZH:TZM';


vgDATE_MASK5 VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM';
vgDATE_MASK2 VARCHAR2(20) := 'YYYYMMDDHH24TZH:TZM';
vgDATE_MASK3 VARCHAR2(10) := 'YYYYMMDD';
vgDATE_MASK4 VARCHAR2(10) := 'YYYY-MM-DD';

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Load Global Parameters
-- ----------------------------------------------------------------

PROCEDURE LOAD_GLOBAL_VALUES(iLOG_PROC IN NUMBER, iPROC IN NUMBER, iuser IN


NUMBER, iSOURCE IN NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, oRESULT_OUT OUT
NUMBER) AS
BEGIN

vgID_PROCESS_EXEC_LOG := iLOG_PROC;
vgID_SOURCE:= iSOURCE;
vgID_user := iuser;
vgID_PROC :=iPROC;
vgDATE_CONTEXT := iDATE;
vgFILENAME_CONTEXT := iFilename;
vgFILE_VERSION := to_number(substr(iFilename,instr(iFilename,'.')+1));
oRESULT_OUT := 0;

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( iLOG_PROC, vgID_TEMPLATE_EXEC_LOG,
vgID_SOURCE_EXEC_LOG, vgORIGEM || '.LOAD_GLOBAL_VALUES', 'ERROR - Not expected',
'ERROR', iuser, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000), CONCAT(CONCAT('ERROR_STACK:
',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('. ERROR_BACKTRACE: ',
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;

END LOAD_GLOBAL_VALUES;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Master Process
-- ----------------------------------------------------------------
PROCEDURE MASTER_PROCESS(iINPUT TP_TAB_P88_885_REN_FTP, iID_PROCESS_EXEC IN
NUMBER, iID_SOURCE_EXEC IN NUMBER, iPROC IN NUMBER, iuser IN NUMBER, iSOURCE IN
NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, iCOLLECTED_DATA_FROM IN DATE,
iCOLLECTED_DATA_TO IN DATE, oRESULT_OUT OUT NUMBER) AS
vRESULT_OUT NUMBER;
vINPUT_DATA VARCHAR2(2048) := 'ID_PROCESS_EXEC: ' || iID_PROCESS_EXEC
|| ', ID PROC: ' || iPROC || ', user: ' || iuser || ', ID_SOURCE: ' || iSOURCE ||
', COLLECTED_DATA_FROM: ' || iCOLLECTED_DATA_FROM || ', To: ' ||
iCOLLECTED_DATA_TO;
vORIGEM VARCHAR(200) := vgORIGEM || '.MASTER_PROCESS';
vCHECK_CONTEXT NUMBER;
vCONTEXT_RESULT_CODE NUMBER;
BEGIN
IF iID_SOURCE_EXEC IS NULL THEN
--Insert log into LOG_SOURCE table
PKG_LOG.INSERT_SOURCE_LOG(iID_PROCESS_EXEC,
iSOURCE ,iuser,iCOLLECTED_DATA_FROM, iCOLLECTED_DATA_TO, null,
vgID_SOURCE_EXEC_LOG);
ELSE
vgID_SOURCE_EXEC_LOG := iID_SOURCE_EXEC;
END IF;

vRESULT_OUT := 1;
vCHECK_CONTEXT := 1;
vCONTEXT_RESULT_CODE := 0;

SELECT NVL(ID_TEMPLATE_EXEC_LOG, 1) INTO vgID_TEMPLATE_EXEC_LOG FROM


TDMI_STA.LOG_PROCESS_EXEC WHERE ID = iID_PROCESS_EXEC;

--Insert a INFO log into LOG_DETAIL_EXEC table


PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'Start Source Process',
'INFO', iuser, vINPUT_DATA, null ,null,null);

-- load global parameters


LOAD_GLOBAL_VALUES(iID_PROCESS_EXEC, iPROC, iuser, iSOURCE, iDATE,
iFilename, vRESULT_OUT);

IF vRESULT_OUT = 0 THEN
-- STG Process
STG_INSERT_DATA (iINPUT, vRESULT_OUT);

IF vRESULT_OUT = 0 THEN
ODS_PROCESS (vRESULT_OUT);
END IF;
END IF;

oRESULT_OUT := vRESULT_OUT;

IF oRESULT_OUT = 1 THEN
--remove from context
--TDMI_STA.PKG_P88_CTX.REMOVE_CTX(iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, iuser, iSOURCE, vgDATE_CONTEXT,
vgFILENAME_CONTEXT, NULL, vCONTEXT_RESULT_CODE);

-- Insert error msg


PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - End source process
with error', 'ERROR', iuser, vINPUT_DATA,null, null, null);
ELSIF (oRESULT_OUT = 0) THEN
--Update log into LOG_SOURCE table
PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,1);

--Insert a INFO log into LOG_DETAIL_EXEC table


PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End Source Process',
'INFO', iuser, vINPUT_DATA, null ,null, null);
END IF;

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - Not expected',
'ERROR', iuser, vINPUT_DATA,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
--PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
oRESULT_OUT := 1;
ROLLBACK;

END MASTER_PROCESS;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Insert Data to STG
-- ----------------------------------------------------------------
PROCEDURE STG_INSERT_DATA(iINPUT TP_TAB_P88_885_REN_FTP, oRESULT_OUT OUT
NUMBER) AS

PRAGMA AUTONOMOUS_TRANSACTION;
vORIGEM VARCHAR(200) := vgORIGEM || '.STG_INSERT_DATA';
bulk_errors EXCEPTION;
PRAGMA EXCEPTION_INIT(bulk_errors, -24381);

BEGIN

vgROWS_COLLECTED := 0;
IF iINPUT.FIRST IS NULL THEN
--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End STG Process - No data
found to Process', 'ALERT', vgID_user, null, null ,null,null);
ELSE
BEGIN
--Insert a INFO log into LOG_DETAIL_EXEC table

PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'STG Processing', 'INFO',
vgID_user, null, null ,null,null);

-- INSERT ALL DATA INTO STG TABLE


FORALL i IN iINPUT.first .. iINPUT.last
INSERT INTO TDMI_STA.DT_STG_P88_885_REN_FTP
(
ID_EXEC,
ID_EXEC_SOURCE,
FILENAME,
YEAR_FILE,
MONTH_FILE,
DAY_FILE,
PERIOD,
SESSION_FILE,
PHYSICAL_UNIT,
POWER_FILE,
FILE_TIMESTAMP,
STG_LOAD_INDICATOR,
ODS_LOAD_INDICATOR,
HIST_LOAD_INDICATOR,
MFK,
CREATED_BY,
CREATED_ON,
CREATED_PROCESS,
UPDATED_BY,
UPDATED_ON,
UPDATED_PROCESS
)
VALUES
(
vgID_PROCESS_EXEC_LOG,
vgID_SOURCE_EXEC_LOG,
vgFILENAME_CONTEXT,
iINPUT(i).YEAR_FILE,
iINPUT(i).MONTH_FILE,
iINPUT(i).DAY_FILE,
iINPUT(i).PERIOD,
iINPUT(i).SESSION_FILE,
iINPUT(i).PHYSICAL_UNIT,
iINPUT(i).POWER_FILE,
iINPUT(i).FILE_TIMESTAMP,
1,
0,
0,
0,
vgID_user,
SYSTIMESTAMP,
vgID_PROC,
vgID_user,
SYSTIMESTAMP,
vgID_PROC
);
COMMIT;
EXCEPTION
WHEN bulk_errors THEN
oRESULT_OUT := 1;

PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
ROLLBACK;
END;

END IF;
oRESULT_OUT := 0;

vgROWS_COLLECTED := iINPUT.COUNT;

-- IF SOMETHING FAILS, ALL IS CANCELED AND RETURN 1


EXCEPTION
/*WHEN bulk_errors THEN
oRESULT_OUT := 1;
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));*/
WHEN OTHERS THEN
oRESULT_OUT := 1;
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process
error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
ROLLBACK;
END STG_INSERT_DATA;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: ODS_PROCESS
-- ----------------------------------------------------------------
PROCEDURE ODS_PROCESS(oRESULT_OUT OUT NUMBER) AS
PRAGMA AUTONOMOUS_TRANSACTION;

CURSOR CCHAVE_PROCESSAMENTO IS
SELECT DISTINCT ID_EXEC,
ID_EXEC_SOURCE,
FILENAME
FROM DT_STG_P88_885_REN_FTP -- base de dados STA
WHERE STG_LOAD_INDICATOR = 1
AND ODS_LOAD_INDICATOR = 0
AND MFK = 0
AND ID_EXEC = vgID_PROCESS_EXEC_LOG
AND ID_EXEC_SOURCE= vgID_SOURCE_EXEC_LOG;

iID_EXEC NUMBER;
iID_EXEC_SOURCE NUMBER;
vData VARCHAR2(125);
vINPUT_DATA VARCHAR2(884) := 'Source: ' || vgID_SOURCE;
vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_PROCESS';
vAUX_RESULT_OUT NUMBER;
vAUX_ROWS_PROCESSED NUMBER;
vFilename VARCHAR2(50);
-- vOra NUMBER;

BEGIN
oRESULT_OUT := 0;
vAUX_RESULT_OUT := 0;
vAUX_ROWS_PROCESSED := 0;
--Start ODS Process
--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ODS Processing', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);

OPEN cCHAVE_PROCESSAMENTO;
LOOP
FETCH cCHAVE_PROCESSAMENTO INTO iID_EXEC, iID_EXEC_SOURCE,
vFilename;

EXIT WHEN cCHAVE_PROCESSAMENTO%NOTFOUND;

ODS_INSERT_DATA (iID_EXEC, iID_EXEC_SOURCE, vgID_SOURCE,


vFilename, oRESULT_OUT);

vAUX_ROWS_PROCESSED := vAUX_ROWS_PROCESSED + vgROWS_PROCESSED;

IF vAUX_RESULT_OUT = 1 THEN
oRESULT_OUT := 1;
ELSE vAUX_RESULT_OUT := oRESULT_OUT;

END IF;

END LOOP;
CLOSE cCHAVE_PROCESSAMENTO;

vgROWS_PROCESSED := vAUX_ROWS_PROCESSED;
--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End ODS process', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS process
error.', 'ERROR', vgID_user, vINPUT_DATA , SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;
ROLLBACK;
END ODS_PROCESS;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: LOAD DATA TO ODS
-- ----------------------------------------------------------------
PROCEDURE ODS_INSERT_DATA(iID_EXEC IN NUMBER, iID_EXEC_SOURCE IN NUMBER,
iID_SOURCE IN NUMBER, iFilename IN VARCHAR2, oRESULT_OUT OUT NUMBER) -- iOra IN
NUMBER,
AS PRAGMA AUTONOMOUS_TRANSACTION;

vINPUT_DATA VARCHAR2(2048) := 'Execution ID: ' || iID_EXEC || ' - Execution


Source ID: ' || iID_EXEC_SOURCE || ' - Source: ' || iID_SOURCE || ' - Filename: '
|| iFilename; -- || ' - Hora: ' || iOra;

VEXIT_NOW exception;
vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_INSERT_DATA';
vDATE DATE;
vFILE_VERSION NUMBER;
vLAST_FILE NUMBER;
vDate_aux VARCHAR2(50);
oRESULT_CODE NUMBER;
oRESULT_MSG VARCHAR2(1000);

vAux1 NUMBER;

BEGIN
vAux1 := INSTR(iFilename,'_', 1, 1)+1;
vDate_aux := SUBSTR(iFilename, vAux1, 8 );
vDate := TO_DATE(vDate_aux, 'YYYYMMDD');

oRESULT_OUT := 0;

-- Delete existing data for same parameters


DELETE FROM TDMI_ODS.DT_P88_885_REN_FTP
WHERE FILENAME = iFilename;

COMMIT;

SELECT MAX(VERSION) INTO vFILE_VERSION


FROM TDMI_ODS.DT_P88_885_REN_FTP
WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) || '%';

if(vFILE_VERSION <= vgFILE_VERSION or vFILE_VERSION is null) THEN

vLAST_FILE := 1;

UPDATE TDMI_ODS.DT_P88_885_REN_FTP
SET LAST_VERSION = 0
WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) || '%'
and VERSION != vgFILE_VERSION;
ELSE

vLAST_FILE := 0;
END IF;
-- Bulk insert data
INSERT INTO TDMI_ODS.DT_P88_885_REN_FTP
SELECT
TDMI_ODS.SEQ_P88_885_REN_FTP.NEXTVAL,
FILENAME,
to_date(concat(concat(concat(concat(YEAR_FILE, '-'), MONTH_FILE),
'-'), DAY_FILE),vgDATE_MASK1),
to_number(PERIOD),
to_number(SESSION_FILE),
PHYSICAL_UNIT,
GET_PHYSICAL_UNIT_ID("PHYSICAL_UNIT",vDate),
TO_NUMBER(POWER_FILE),
vgFILE_VERSION,
vLAST_FILE,
to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 / 1000) *
to_number(FILE_TIMESTAMP),
vgID_user, -- created by
CURRENT_TIMESTAMP, -- created on
vgID_PROC, -- created process
vgID_user, -- updated by
CURRENT_TIMESTAMP, -- updated on
vgID_PROC -- updated process
FROM
TDMI_STA.DT_STG_P88_885_REN_FTP
WHERE ID_EXEC = iID_EXEC
AND ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename
AND SESSION_FILE = CEIL(to_number(PERIOD)/4)
AND stg_load_indicator = 1
AND ods_load_indicator = 0
AND MFK = 0;

vgROWS_PROCESSED := SQL%ROWCOUNT;

UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
SET A.ods_load_indicator = 1
WHERE A.ID_EXEC = iID_EXEC
AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename;

PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'vgROWS_PROCESSED - ' ||
vgROWS_PROCESSED, 'DEBUG', vgID_user, vINPUT_DATA, NULL, NULL, NULL);

-- PKG_P88_CTX.ADD_CONTEXT(iID_EXEC,
-- iID_EXEC_SOURCE,
-- 88,
-- iID_SOURCE,
--
to_date(substr(iFilename,instr(iFilename,'_')+1,8),vgDATE_MASK3), --
filenameDate
--
substr(iFilename,instr(iFilename,'.')+1), --file_version
-- iFilename,
-- oRESULT_CODE);
PKG_P157_CTX.INSERT_CTX(iID_SOURCE, iFilename, oRESULT_CODE, oRESULT_MSG);
COMMIT;
oRESULT_OUT := 0;

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS Processing -
End Insert with Error', 'ERROR', vgID_user, vINPUT_DATA ,SQLCODE, SUBSTR(SQLERRM,
1, 4000), CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;
ROLLBACK;

UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
SET A.MFK = 1
WHERE A.ID_EXEC = iID_EXEC
AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename;
COMMIT;
END ODS_INSERT_DATA;

FUNCTION GET_PHYSICAL_UNIT_ID(iPHYSICAL_UNIT IN VARCHAR2, iDate IN DATE) RETURN


NUMBER IS
vPHYSICAL_UNIT_ID NUMBER;
BEGIN

SELECT A.ID
INTO vPHYSICAL_UNIT_ID
FROM TDMI_ODS.LOV_UNIDADE_FISICA A
WHERE A.UNIDADE_FISICA = iPHYSICAL_UNIT
AND A.DT_INICIO <= iDATE
AND A.DT_FIM >= iDATE;

RETURN vPHYSICAL_UNIT_ID;

EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END GET_PHYSICAL_UNIT_ID;

END PKG_P88_885_REN_FTP;

new:create or replace PACKAGE BODY TDMI_STA."PKG_P88_885_REN_FTP" AS

/* ------------------------------
Global Variables Declaration
------------------------------ */
vgID_PROCESS_EXEC_LOG NUMBER;
vgID_user NUMBER;
vgID_PROC NUMBER;
vgORIGEM VARCHAR(884):= 'PKG_P88_885_REN_FTP';
vgID_SOURCE NUMBER;
vgDATE_CONTEXT DATE;

vgID_SOURCE_EXEC_LOG NUMBER;
vgROWS_COLLECTED NUMBER;
vgROWS_PROCESSED NUMBER;
vgDATE_TIME_SS_MASK VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SS';
vgID_TEMPLATE_EXEC_LOG NUMBER;

vgDATE_MASK VARCHAR2(10) := 'DD/MM/YYYY';


vgDATE_MASK1 VARCHAR2(10) := 'YYYY-MM-DD';
vgDATE_TIME_MASK0 VARCHAR2(32) := 'DD/MM/YYYY HH24:MI';
vgDATE_TIME_MASK1 VARCHAR2(32) := 'YYYY-MM-DD HH24:MI:SS';
vgDATE_TIME_MASK VARCHAR(30) := 'YYYY-MM-DD"T"HH24:MI.ff3"Z"';
--vgDATE_TIME_MASK2 VARCHAR(35) := 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"';
vgNUMBER_MASK VARCHAR2(50) :=
'999999999999999.99999999999999999999999999999';
vgNUMBER_MASK_SCI VARCHAR(50) := '9.99999999999999999999EEEE';
vgFILENAME_CONTEXT VARCHAR2(50);
vgFILE_VERSION NUMBER;

vgDATE_MASK6 VARCHAR2(50) := 'YYYY-MON-DD"T"HH24:MI:SSTZH:TZM';


vgDATE_MASK5 VARCHAR2(50) := 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM';
vgDATE_MASK2 VARCHAR2(20) := 'YYYYMMDDHH24TZH:TZM';
vgDATE_MASK3 VARCHAR2(10) := 'YYYYMMDD';
vgDATE_MASK4 VARCHAR2(10) := 'YYYY-MM-DD';

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Load Global Parameters
-- ----------------------------------------------------------------

PROCEDURE LOAD_GLOBAL_VALUES(iLOG_PROC IN NUMBER, iPROC IN NUMBER, iuser IN


NUMBER, iSOURCE IN NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, oRESULT_OUT OUT
NUMBER) AS
BEGIN

vgID_PROCESS_EXEC_LOG := iLOG_PROC;
vgID_SOURCE:= iSOURCE;
vgID_user := iuser;
vgID_PROC :=iPROC;
vgDATE_CONTEXT := iDATE;
vgFILENAME_CONTEXT := iFilename;
vgFILE_VERSION := to_number(substr(iFilename,instr(iFilename,'.')+1));
oRESULT_OUT := 0;

EXCEPTION
WHEN OTHERS THEN

PKG_LOG.INSERT_DETAIL_EXEC_LOG( iLOG_PROC, vgID_TEMPLATE_EXEC_LOG,


vgID_SOURCE_EXEC_LOG, vgORIGEM || '.LOAD_GLOBAL_VALUES', 'ERROR - Not expected',
'ERROR', iuser, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000), CONCAT(CONCAT('ERROR_STACK:
',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('. ERROR_BACKTRACE: ',
DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;

END LOAD_GLOBAL_VALUES;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Master Process
-- ----------------------------------------------------------------
PROCEDURE MASTER_PROCESS(iINPUT TP_TAB_P88_885_REN_FTP, iID_PROCESS_EXEC IN
NUMBER, iID_SOURCE_EXEC IN NUMBER, iPROC IN NUMBER, iuser IN NUMBER, iSOURCE IN
NUMBER, iDATE IN DATE, iFilename IN VARCHAR2, iCOLLECTED_DATA_FROM IN DATE,
iCOLLECTED_DATA_TO IN DATE, oRESULT_OUT OUT NUMBER) AS
vRESULT_OUT NUMBER;
vINPUT_DATA VARCHAR2(2048) := 'ID_PROCESS_EXEC: ' || iID_PROCESS_EXEC
|| ', ID PROC: ' || iPROC || ', user: ' || iuser || ', ID_SOURCE: ' || iSOURCE ||
', COLLECTED_DATA_FROM: ' || iCOLLECTED_DATA_FROM || ', To: ' ||
iCOLLECTED_DATA_TO;
vORIGEM VARCHAR(200) := vgORIGEM || '.MASTER_PROCESS';
vCHECK_CONTEXT NUMBER;
vCONTEXT_RESULT_CODE NUMBER;
BEGIN
IF iID_SOURCE_EXEC IS NULL THEN
--Insert log into LOG_SOURCE table
PKG_LOG.INSERT_SOURCE_LOG(iID_PROCESS_EXEC,
iSOURCE ,iuser,iCOLLECTED_DATA_FROM, iCOLLECTED_DATA_TO, null,
vgID_SOURCE_EXEC_LOG);
ELSE
vgID_SOURCE_EXEC_LOG := iID_SOURCE_EXEC;
END IF;

vRESULT_OUT := 1;
vCHECK_CONTEXT := 1;
vCONTEXT_RESULT_CODE := 0;

SELECT NVL(ID_TEMPLATE_EXEC_LOG, 1) INTO vgID_TEMPLATE_EXEC_LOG FROM


TDMI_STA.LOG_PROCESS_EXEC WHERE ID = iID_PROCESS_EXEC;

--Insert a INFO log into LOG_DETAIL_EXEC table


PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'Start Source Process',
'INFO', iuser, vINPUT_DATA, null ,null,null);

-- load global parameters


LOAD_GLOBAL_VALUES(iID_PROCESS_EXEC, iPROC, iuser, iSOURCE, iDATE,
iFilename, vRESULT_OUT);

IF vRESULT_OUT = 0 THEN
-- STG Process
STG_INSERT_DATA (iINPUT, vRESULT_OUT);

IF vRESULT_OUT = 0 THEN
ODS_PROCESS (vRESULT_OUT);
END IF;
END IF;

oRESULT_OUT := vRESULT_OUT;

IF oRESULT_OUT = 1 THEN
--remove from context
--TDMI_STA.PKG_P88_CTX.REMOVE_CTX(iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, iuser, iSOURCE, vgDATE_CONTEXT,
vgFILENAME_CONTEXT, NULL, vCONTEXT_RESULT_CODE);

-- Insert error msg


PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - End source process
with error', 'ERROR', iuser, vINPUT_DATA,null, null, null);
ELSIF (oRESULT_OUT = 0) THEN
--Update log into LOG_SOURCE table
PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,1);

--Insert a INFO log into LOG_DETAIL_EXEC table


PKG_LOG.INSERT_DETAIL_EXEC_LOG (iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End Source Process',
'INFO', iuser, vINPUT_DATA, null ,null, null);
END IF;

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( iID_PROCESS_EXEC,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - Not expected',
'ERROR', iuser, vINPUT_DATA,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
--PKG_LOG.UPDATE_SOURCE_LOG (vgID_SOURCE_EXEC_LOG,
vgROWS_COLLECTED, vgROWS_PROCESSED, iuser, null,0);
oRESULT_OUT := 1;
ROLLBACK;

END MASTER_PROCESS;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Insert Data to STG
-- ----------------------------------------------------------------
PROCEDURE STG_INSERT_DATA(iINPUT TP_TAB_P88_885_REN_FTP, oRESULT_OUT OUT
NUMBER) AS

PRAGMA AUTONOMOUS_TRANSACTION;
vORIGEM VARCHAR(200) := vgORIGEM || '.STG_INSERT_DATA';
bulk_errors EXCEPTION;
PRAGMA EXCEPTION_INIT(bulk_errors, -24381);

BEGIN

vgROWS_COLLECTED := 0;

IF iINPUT.FIRST IS NULL THEN


--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End STG Process - No data
found to Process', 'ALERT', vgID_user, null, null ,null,null);
ELSE
BEGIN
--Insert a INFO log into LOG_DETAIL_EXEC table

PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'STG Processing', 'INFO',
vgID_user, null, null ,null,null);

-- INSERT ALL DATA INTO STG TABLE


FORALL i IN iINPUT.first .. iINPUT.last
INSERT INTO TDMI_STA.DT_STG_P88_885_REN_FTP
(
ID_EXEC,
ID_EXEC_SOURCE,
FILENAME,
YEAR_FILE,
MONTH_FILE,
DAY_FILE,
PERIOD,
SESSION_FILE,
PHYSICAL_UNIT,
POWER_FILE,
FILE_TIMESTAMP,
STG_LOAD_INDICATOR,
ODS_LOAD_INDICATOR,
HIST_LOAD_INDICATOR,
MFK,
CREATED_BY,
CREATED_ON,
CREATED_PROCESS,
UPDATED_BY,
UPDATED_ON,
UPDATED_PROCESS
)
VALUES
(
vgID_PROCESS_EXEC_LOG,
vgID_SOURCE_EXEC_LOG,
vgFILENAME_CONTEXT,
iINPUT(i).YEAR_FILE,
iINPUT(i).MONTH_FILE,
iINPUT(i).DAY_FILE,
iINPUT(i).PERIOD,
iINPUT(i).SESSION_FILE,
iINPUT(i).PHYSICAL_UNIT,
iINPUT(i).POWER_FILE,
iINPUT(i).FILE_TIMESTAMP,
1,
0,
0,
0,
vgID_user,
SYSTIMESTAMP,
vgID_PROC,
vgID_user,
SYSTIMESTAMP,
vgID_PROC
);
COMMIT;
EXCEPTION
WHEN bulk_errors THEN
oRESULT_OUT := 1;

PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
ROLLBACK;
END;

END IF;
oRESULT_OUT := 0;

vgROWS_COLLECTED := iINPUT.COUNT;

-- IF SOMETHING FAILS, ALL IS CANCELED AND RETURN 1


EXCEPTION
/*WHEN bulk_errors THEN
oRESULT_OUT := 1;
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process error
- Bulk Error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));*/
WHEN OTHERS THEN
oRESULT_OUT := 1;
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG,vgID_SOURCE_EXEC_LOG, vORIGEM , 'ERROR - STG Process
error', 'ERROR', vgID_user, null,SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
ROLLBACK;
END STG_INSERT_DATA;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: ODS_PROCESS
-- ----------------------------------------------------------------
PROCEDURE ODS_PROCESS(oRESULT_OUT OUT NUMBER) AS
PRAGMA AUTONOMOUS_TRANSACTION;

CURSOR CCHAVE_PROCESSAMENTO IS
SELECT DISTINCT ID_EXEC,
ID_EXEC_SOURCE,
FILENAME
FROM DT_STG_P88_885_REN_FTP -- base de dados STA
WHERE STG_LOAD_INDICATOR = 1
AND ODS_LOAD_INDICATOR = 0
AND MFK = 0
AND ID_EXEC = vgID_PROCESS_EXEC_LOG
AND ID_EXEC_SOURCE= vgID_SOURCE_EXEC_LOG;

iID_EXEC NUMBER;
iID_EXEC_SOURCE NUMBER;
vData VARCHAR2(125);
vINPUT_DATA VARCHAR2(884) := 'Source: ' || vgID_SOURCE;
vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_PROCESS';
vAUX_RESULT_OUT NUMBER;
vAUX_ROWS_PROCESSED NUMBER;
vFilename VARCHAR2(50);
-- vOra NUMBER;

BEGIN
oRESULT_OUT := 0;
vAUX_RESULT_OUT := 0;
vAUX_ROWS_PROCESSED := 0;
--Start ODS Process
--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ODS Processing', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);

OPEN cCHAVE_PROCESSAMENTO;
LOOP
FETCH cCHAVE_PROCESSAMENTO INTO iID_EXEC, iID_EXEC_SOURCE,
vFilename;

EXIT WHEN cCHAVE_PROCESSAMENTO%NOTFOUND;

ODS_INSERT_DATA (iID_EXEC, iID_EXEC_SOURCE, vgID_SOURCE,


vFilename, oRESULT_OUT);

vAUX_ROWS_PROCESSED := vAUX_ROWS_PROCESSED + vgROWS_PROCESSED;

IF vAUX_RESULT_OUT = 1 THEN
oRESULT_OUT := 1;
ELSE vAUX_RESULT_OUT := oRESULT_OUT;

END IF;

END LOOP;
CLOSE cCHAVE_PROCESSAMENTO;

vgROWS_PROCESSED := vAUX_ROWS_PROCESSED;
--Insert a INFO log into LOG_DETAIL_EXEC table
PKG_LOG.INSERT_DETAIL_EXEC_LOG (vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'End ODS process', 'INFO',
vgID_user, vINPUT_DATA, null ,null,null);

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS process
error.', 'ERROR', vgID_user, vINPUT_DATA , SQLCODE, SUBSTR(SQLERRM, 1, 4000),
CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;
ROLLBACK;
END ODS_PROCESS;

-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: LOAD DATA TO ODS
-- ----------------------------------------------------------------
PROCEDURE ODS_INSERT_DATA(iID_EXEC IN NUMBER, iID_EXEC_SOURCE IN NUMBER,
iID_SOURCE IN NUMBER, iFilename IN VARCHAR2, oRESULT_OUT OUT NUMBER) -- iOra IN
NUMBER,
AS PRAGMA AUTONOMOUS_TRANSACTION;
vINPUT_DATA VARCHAR2(2048) := 'Execution ID: ' || iID_EXEC || ' - Execution
Source ID: ' || iID_EXEC_SOURCE || ' - Source: ' || iID_SOURCE || ' - Filename: '
|| iFilename; -- || ' - Hora: ' || iOra;

VEXIT_NOW exception;
vORIGEM VARCHAR(200) := vgORIGEM || '.ODS_INSERT_DATA';
vDATE DATE;
vFILE_VERSION NUMBER;
vLAST_FILE NUMBER;
vDate_aux VARCHAR2(50);
oRESULT_CODE NUMBER;
oRESULT_MSG VARCHAR2(1000);

vAux1 NUMBER;

BEGIN
vAux1 := INSTR(iFilename,'_', 1, 1)+1;
vDate_aux := SUBSTR(iFilename, vAux1, 8 );
vDate := TO_DATE(vDate_aux, 'YYYYMMDD');

oRESULT_OUT := 0;

-- Delete existing data for same parameters


DELETE FROM TDMI_ODS.DT_P88_885_REN_FTP
WHERE FILENAME = iFilename;

COMMIT;

SELECT MAX(VERSION) INTO vFILE_VERSION


FROM TDMI_ODS.DT_P88_885_REN_FTP
WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) || '%';

if(vFILE_VERSION <= vgFILE_VERSION or vFILE_VERSION is null) THEN

vLAST_FILE := 1;

UPDATE TDMI_ODS.DT_P88_885_REN_FTP
SET LAST_VERSION = 0
WHERE FILENAME like substr(iFilename,0,INSTR(iFilename, '.')) || '%'
and VERSION != vgFILE_VERSION;
ELSE

vLAST_FILE := 0;
END IF;

-- Bulk insert data


INSERT INTO TDMI_ODS.DT_P88_885_REN_FTP
SELECT
TDMI_ODS.SEQ_P88_885_REN_FTP.NEXTVAL,
FILENAME,
to_date(concat(concat(concat(concat(YEAR_FILE, '-'), MONTH_FILE),
'-'), DAY_FILE),vgDATE_MASK1),
to_number(PERIOD),
to_number(SESSION_FILE),
PHYSICAL_UNIT,
GET_PHYSICAL_UNIT_ID("PHYSICAL_UNIT",vDate),
TO_NUMBER(POWER_FILE),
vgFILE_VERSION,
vLAST_FILE,
to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 / 1000) *
to_number(FILE_TIMESTAMP),
vgID_user, -- created by
CURRENT_TIMESTAMP, -- created on
vgID_PROC, -- created process
vgID_user, -- updated by
CURRENT_TIMESTAMP, -- updated on
vgID_PROC -- updated process
FROM
TDMI_STA.DT_STG_P88_885_REN_FTP
WHERE ID_EXEC = iID_EXEC
AND ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename
AND SESSION_FILE = CEIL(to_number(PERIOD)/4)
AND stg_load_indicator = 1
AND ods_load_indicator = 0
AND MFK = 0;

vgROWS_PROCESSED := SQL%ROWCOUNT;

UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
SET A.ods_load_indicator = 1
WHERE A.ID_EXEC = iID_EXEC
AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename;

PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'vgROWS_PROCESSED - ' ||
vgROWS_PROCESSED, 'DEBUG', vgID_user, vINPUT_DATA, NULL, NULL, NULL);

-- PKG_P88_CTX.ADD_CONTEXT(iID_EXEC,
-- iID_EXEC_SOURCE,
-- 88,
-- iID_SOURCE,
--
to_date(substr(iFilename,instr(iFilename,'_')+1,8),vgDATE_MASK3), --
filenameDate
--
substr(iFilename,instr(iFilename,'.')+1), --file_version
-- iFilename,
-- oRESULT_CODE);
PKG_P157_CTX.INSERT_CTX(iID_SOURCE, iFilename, oRESULT_CODE, oRESULT_MSG);
COMMIT;
oRESULT_OUT := 0;

EXCEPTION
WHEN OTHERS THEN
PKG_LOG.INSERT_DETAIL_EXEC_LOG( vgID_PROCESS_EXEC_LOG,
vgID_TEMPLATE_EXEC_LOG, vgID_SOURCE_EXEC_LOG, vORIGEM, 'ERROR - ODS Processing -
End Insert with Error', 'ERROR', vgID_user, vINPUT_DATA ,SQLCODE, SUBSTR(SQLERRM,
1, 4000), CONCAT(CONCAT('ERROR_STACK: ',DBMS_UTILITY.FORMAT_ERROR_STACK), CONCAT('.
ERROR_BACKTRACE: ', DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)));
oRESULT_OUT := 1;
ROLLBACK;

UPDATE TDMI_STA.DT_STG_P88_885_REN_FTP A
SET A.MFK = 1
WHERE A.ID_EXEC = iID_EXEC
AND A.ID_EXEC_SOURCE = iID_EXEC_SOURCE
AND FILENAME = iFilename;
COMMIT;
END ODS_INSERT_DATA;

FUNCTION GET_PHYSICAL_UNIT_ID(iPHYSICAL_UNIT IN VARCHAR2, iDate IN DATE) RETURN


NUMBER IS
vPHYSICAL_UNIT_ID NUMBER;
BEGIN

SELECT A.ID
INTO vPHYSICAL_UNIT_ID
FROM TDMI_ODS.LOV_UNIDADE_FISICA A
WHERE A.UNIDADE_FISICA = iPHYSICAL_UNIT
AND A.DT_INICIO <= iDATE
AND A.DT_FIM >= iDATE;

RETURN vPHYSICAL_UNIT_ID;

EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END GET_PHYSICAL_UNIT_ID;

END PKG_P88_885_REN_FTP;

Package Body PKG_P88_885_REN_FTP compiled

Elapsed: 00:00:00.705
SQL>
SQL> SHOW ERRORS;
No errors.
SQL>
SQL> GRANT EXECUTE ON &var1."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_EXECUTE";
old:GRANT EXECUTE ON &var1."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_EXECUTE"
new:GRANT EXECUTE ON TDMI_STA."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_EXECUTE"

Grant succeeded.

Elapsed: 00:00:00.021
SQL> GRANT DEBUG ON &var1."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_DEBUG";
old:GRANT DEBUG ON &var1."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_DEBUG"
new:GRANT DEBUG ON TDMI_STA."PKG_P88_885_REN_FTP" TO "ROLE_TDMI_STA_DEBUG"

Grant succeeded.

Elapsed: 00:00:00.004
SQL>
SQL> spool off;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy