-
Notifications
You must be signed in to change notification settings - Fork 1
packages tree.update_timer
Jan Kvetina edited this page Oct 10, 2020
·
5 revisions
Repository spec: tree.update_timer
,
body: tree.update_timer
This procedure allow you to easily track time spend on log_module
/log_action
or any passed log_id
.
It also stops profiler (DBMS_PROFILER
, DBMS_HPROF
) and code coverage (DBMS_PLSQL_CODE_COVERAGE
)
initiated in tree.log_module
based on settings in logs_setup
table.
PROCEDURE update_timer (
in_log_id logs.log_id%TYPE := NULL
);
Show code (33 lines)
PROCEDURE update_timer (
in_log_id logs.log_id%TYPE := NULL
) AS
PRAGMA AUTONOMOUS_TRANSACTION;
--
rec logs%ROWTYPE;
BEGIN
IF in_log_id IS NULL THEN
tree.get_caller__ (
in_parent_id => in_log_id,
out_module_name => rec.module_name,
out_module_line => rec.module_line,
out_parent_id => rec.log_parent
);
END IF;
-- update timer
UPDATE logs e
SET e.timer =
LPAD(EXTRACT(HOUR FROM LOCALTIMESTAMP - e.created_at), 2, '0') || ':' ||
LPAD(EXTRACT(MINUTE FROM LOCALTIMESTAMP - e.created_at), 2, '0') || ':' ||
RPAD(REGEXP_REPLACE(
REGEXP_REPLACE(EXTRACT(SECOND FROM LOCALTIMESTAMP - e.created_at), '^[\.,]', '00,'),
'^(\d)[\.,]', '0\1,'
), 9, '0')
WHERE e.log_id = COALESCE(in_log_id, rec.log_parent);
--
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
PROCEDURE your_procedure AS
BEGIN
tree.log_module();
-- your code
NULL;
-- update logs.timer for this module
tree.update_timer();
END;
PROCEDURE your_procedure AS
log_id logs.log_id%TYPE;
BEGIN
tree.log_module();
-- get log_id before your code (log_module, log_action, log_detree...)
log_id := tree.log_debug('STARTING_SOMETHING_LONG'); -- any log_[flag] function
-- run your code
NULL;
-- update logs.timer for specific log_id
tree.update_timer(log_id);
END;