Fixed log_progress
This commit is contained in:
parent
c8b8288009
commit
0f8f5d7f71
@ -931,7 +931,9 @@ CREATE OR REPLACE PACKAGE app AS
|
|||||||
--
|
--
|
||||||
PROCEDURE log_progress (
|
PROCEDURE log_progress (
|
||||||
in_action_name logs.action_name%TYPE := NULL,
|
in_action_name logs.action_name%TYPE := NULL,
|
||||||
in_progress NUMBER := NULL -- in percent (0-1)
|
in_progress NUMBER := NULL, -- percentage (1 = 100%)
|
||||||
|
in_note VARCHAR2 := NULL,
|
||||||
|
in_parent_id logs.log_id%TYPE := NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1782,65 +1782,79 @@ CREATE OR REPLACE PACKAGE BODY app AS
|
|||||||
|
|
||||||
PROCEDURE log_progress (
|
PROCEDURE log_progress (
|
||||||
in_action_name logs.action_name%TYPE := NULL,
|
in_action_name logs.action_name%TYPE := NULL,
|
||||||
in_progress NUMBER := NULL -- in percent (0-1)
|
in_progress NUMBER := NULL, -- percentage (1 = 100%)
|
||||||
|
in_note VARCHAR2 := NULL,
|
||||||
|
in_parent_id logs.log_id%TYPE := NULL
|
||||||
)
|
)
|
||||||
AS
|
AS
|
||||||
PRAGMA AUTONOMOUS_TRANSACTION;
|
PRAGMA AUTONOMOUS_TRANSACTION;
|
||||||
--
|
--
|
||||||
slno BINARY_INTEGER;
|
callstack_hash VARCHAR2(40);
|
||||||
|
callstack_depth PLS_INTEGER := 2;
|
||||||
|
v_rindex PLS_INTEGER;
|
||||||
|
v_slno PLS_INTEGER;
|
||||||
rec logs%ROWTYPE;
|
rec logs%ROWTYPE;
|
||||||
BEGIN
|
BEGIN
|
||||||
NULL;
|
rec.log_parent := in_parent_id;
|
||||||
/*
|
|
||||||
callstack_hash := app.get_hash();
|
-- find parent from callstack
|
||||||
IF map_tree.EXISTS(callstack_hash) THEN
|
IF rec.log_parent IS NULL THEN
|
||||||
rec.log_parent := map_tree(callstack_hash);
|
callstack_hash := app.get_hash(app.get_call_stack (
|
||||||
|
in_offset => callstack_depth,
|
||||||
|
in_skip_others => TRUE,
|
||||||
|
in_line_numbers => FALSE,
|
||||||
|
in_splitter => '|'
|
||||||
|
));
|
||||||
|
--
|
||||||
|
IF map_tree.EXISTS(callstack_hash) THEN
|
||||||
|
rec.log_parent := map_tree(callstack_hash);
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
--
|
--
|
||||||
IF rec.log_parent IS NULL THEN
|
IF rec.log_parent IS NULL THEN
|
||||||
|
rec.log_parent := recent_log_id;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
-- find parent to get rindex, module and action names
|
||||||
-- find longops record
|
BEGIN
|
||||||
IF NVL(in_progress, 0) = 0 THEN
|
SELECT l.log_id, l.module_name, l.action_name, l.arguments, l.created_at
|
||||||
-- first visit
|
INTO rec.log_id, rec.module_name, rec.action_name, rec.arguments, rec.created_at
|
||||||
SELECT l.* INTO rec
|
|
||||||
FROM logs l
|
FROM logs l
|
||||||
WHERE l.log_id = rec.log_parent;
|
WHERE l.log_id > rec.log_parent
|
||||||
|
AND l.log_parent = rec.log_parent
|
||||||
|
AND l.flag = app.flag_longops;
|
||||||
--
|
--
|
||||||
rec.log_id := log_id.NEXTVAL;
|
v_rindex := REPLACE(REGEXP_SUBSTR(rec.arguments, '\|[^\|]*$'), '|', '');
|
||||||
rec.log_parent := rec.log_id; -- create fresh child
|
|
||||||
rec.flag := app.flag_longops;
|
|
||||||
rec.payload := DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS_NOHINT; -- rindex
|
|
||||||
--
|
|
||||||
INSERT INTO logs
|
|
||||||
VALUES rec;
|
|
||||||
ELSE
|
|
||||||
SELECT l.* INTO rec
|
|
||||||
FROM logs l
|
|
||||||
WHERE l.log_parent = rec.log_parent
|
|
||||||
AND l.flag = app.flag_longops;
|
|
||||||
|
|
||||||
-- update progress in log
|
-- update progress in log
|
||||||
UPDATE logs l
|
UPDATE logs l
|
||||||
SET l.arguments = ROUND(NVL(in_progress, 0) * 100, 2) || '%',
|
SET l.arguments = ROUND(NVL(in_progress, 0) * 100, 2) || '%|' || in_note || '|' || v_rindex,
|
||||||
l.payload = rec.payload,
|
|
||||||
l.module_timer = app.get_duration(in_start => rec.created_at)
|
l.module_timer = app.get_duration(in_start => rec.created_at)
|
||||||
WHERE l.log_id = rec.log_id;
|
WHERE l.log_id = rec.log_id;
|
||||||
END IF;
|
EXCEPTION
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
v_rindex := DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS_NOHINT;
|
||||||
|
|
||||||
|
-- create new longops record
|
||||||
|
rec.log_id := app.log__ (
|
||||||
|
in_flag => app.flag_longops,
|
||||||
|
in_action_name => in_action_name,
|
||||||
|
in_arguments => ROUND(NVL(in_progress, 0) * 100, 2) || '%|' || in_note || '|' || v_rindex,
|
||||||
|
in_parent_id => rec.log_parent
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
-- update progress for system views
|
-- update progress for system views
|
||||||
DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS (
|
DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS (
|
||||||
rindex => rec.payload,
|
rindex => v_rindex,
|
||||||
slno => slno,
|
slno => v_slno,
|
||||||
op_name => rec.module_name, -- 64 chars
|
op_name => rec.module_name, -- 64 chars
|
||||||
target_desc => rec.action_name, -- 32 chars
|
target_desc => rec.action_name, -- 32 chars
|
||||||
context => rec.log_id,
|
context => rec.log_id,
|
||||||
sofar => LEAST(NVL(in_progress, 0), 1)
|
sofar => LEAST(NVL(in_progress, 0), 1),
|
||||||
totalwork => 1, -- 1 = 100%
|
totalwork => 1, -- 1 = 100%
|
||||||
units => '%'
|
units => '%'
|
||||||
);
|
);
|
||||||
*/
|
|
||||||
--
|
--
|
||||||
COMMIT;
|
COMMIT;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user