#oracle #plsql #dbms-scheduler
#Oracle #plsql #СУБД-планировщик
Вопрос:
Когда мы запускаем задание через dbms_schedular, оно создает запись в *_SCHEDULER_JOBS Есть ли способ в середине или в конце задания. Я записываю в запись
Пример: Job_A порождает Procedure_B и внутри Procedure_B, я могу записать обратно в запись в *_scheduler_jobs в Job_A
Поскольку procedure_B выполняет цикл по последовательности подзадач, например, batch_id= 1-10, и я хочу записать id =1 и id = 10 в запись для Job_A в *_SCHEDULER_JOBS
-Спасибо за всю помощь.
Ответ №1:
Вопрос немного расплывчатый: «Я хочу записать id = 1 и id = 10 в запись для Job_A в *_SCHEDULER_JOBS».
Из процедуры вы можете использовать SYS_CONTEXT(‘USERENV’,’BG_JOB_ID’) для получения идентификатора объекта задания планировщика и поиска владельца / имени в ALL_OBJECTS . Если задание принадлежит тому же пользователю, что и процедура, или ему предоставлены соответствующие привилегии, оно может вызвать DBMS_SCHEDULER.SET_ATTRIBUTE для внесения изменений в задание. В зависимости от того, какой атрибут он изменяет, это, вероятно, сработает только при следующем запуске задания.
BG_JOB_ID работает только в том случае, если задание выполняется из планировщика, а не в том случае, если кто-то выполняет dbms_scheduler.run_job в своем собственном сеансе. Учитывая, что несколько сеансов могут выполнять это одновременно, вы, вероятно, не хотите, чтобы все они пытались внести изменения в задание в любом случае.