03 PKB P88 F885 STA Log
03 PKB P88 F885 STA Log
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;
-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Load Global Parameters
-- ----------------------------------------------------------------
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;
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);
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);
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;
-- -----------------------------------------------------------------
-- 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;
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;
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;
COMMIT;
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;
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;
/* ------------------------------
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;
-- -----------------------------------------------------------------
-- Autor : INDRA
-- Date : 20181119
-- Description: Load Global Parameters
-- ----------------------------------------------------------------
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
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;
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);
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;
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);
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;
-- -----------------------------------------------------------------
-- 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;
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;
COMMIT;
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;
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;
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;
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;