From f3545054e2eab2abd4afc3158e7f65d6cb52d171 Mon Sep 17 00:00:00 2001 From: Jan Kvetina Date: Wed, 5 Jan 2022 21:45:55 +0100 Subject: [PATCH] Log schedulers and link them to another log record --- packages/app.spec.sql | 32 ++++++++++++-------------- packages/app.sql | 52 ++++++++++++++++++++++++++----------------- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/packages/app.spec.sql b/packages/app.spec.sql index bf6098b..fbcecc7 100644 --- a/packages/app.spec.sql +++ b/packages/app.spec.sql @@ -1018,26 +1018,22 @@ CREATE OR REPLACE PACKAGE app AS -- - -- Log scheduler call and link its logs to this `log_id` - -- Create and start one time scheduler - -- - FUNCTION log_scheduler ( - --in_log_id logs.log_id%TYPE, - in_job_name VARCHAR2, ------------------ PROCEDURE start_scheduler ( - in_statement VARCHAR2 := NULL, - in_comments VARCHAR2 := NULL, - in_priority PLS_INTEGER := NULL - ) - RETURN logs.log_id%TYPE; - - - - -- - -- ^ + -- Link one time scheduled jobs to specific log record (user) -- PROCEDURE log_scheduler ( - in_log_id logs.log_id%TYPE - --in_args ??? + in_log_id logs.log_id%TYPE, + in_job_name VARCHAR2 + ); + + + + -- + -- Proper way how to schedule one time jobs + -- + PROCEDURE create_one_time_job ( + in_job_name VARCHAR2, + in_statement VARCHAR2 := NULL, + in_comments VARCHAR2 := NULL ); diff --git a/packages/app.sql b/packages/app.sql index 6f128d3..80c4918 100644 --- a/packages/app.sql +++ b/packages/app.sql @@ -2042,35 +2042,45 @@ CREATE OR REPLACE PACKAGE BODY app AS - -- - -- Log scheduler call and link its logs to this `log_id` - -- Create and start one time scheduler - -- - FUNCTION log_scheduler ( - --in_log_id logs.log_id%TYPE, - in_job_name VARCHAR2, ------------------ PROCEDURE start_scheduler ( - in_statement VARCHAR2 := NULL, - in_comments VARCHAR2 := NULL, - in_priority PLS_INTEGER := NULL + PROCEDURE log_scheduler ( + in_log_id logs.log_id%TYPE, + in_job_name VARCHAR2 ) - RETURN logs.log_id%TYPE AS + curr_id logs.log_id%TYPE; BEGIN - RETURN NULL; + curr_id := app.log__ ( + in_flag => app.flag_scheduler, + in_arguments => in_job_name, + in_parent_id => in_log_id + ); END; - -- - -- ^ - -- - PROCEDURE log_scheduler ( - in_log_id logs.log_id%TYPE - --in_args ??? - ) - AS + PROCEDURE create_one_time_job ( + in_job_name VARCHAR2, + in_statement VARCHAR2 := NULL, + in_comments VARCHAR2 := NULL + ) AS + v_log_id logs.log_id%TYPE; BEGIN - NULL; + v_log_id := app.log_module(in_job_name, in_statement, in_comments); + -- + DBMS_SCHEDULER.CREATE_JOB ( + in_job_name, + job_type => 'PLSQL_BLOCK', + job_action => 'BEGIN app.log_scheduler(' || v_log_id || ', ''' || in_job_name || '''); ' || RTRIM(in_statement, ';') || '; app.log_success(); END;', + start_date => NULL, + enabled => TRUE, + auto_drop => TRUE, + comments => v_log_id || '|' || in_comments + ); + -- + app.log_success(v_log_id); + EXCEPTION + WHEN OTHERS THEN + app.raise_error(); END;