【问题标题】:call back in dbms_scheduler job Oracle在 dbms_scheduler 作业 Oracle 中回调
【发布时间】:2021-01-21 21:48:23
【问题描述】:

当我们通过 dbms_schedular 启动作业时,它会在 *_SCHEDULER_JOBS 中创建一条记录 有没有办法在工作的中间或结束时。我写在记录上

示例: Job_A 产生 Procedure_B 而在Procedure_B里面,我可以写回Job_A中*_scheduler_jobs中的记录

由于 procedure_B 在一系列子任务上循环,例如batch_id=1 到 10 我想将 id=1 和 id=10 写入 *_SCHEDULER_JOBS 中 Job_A 的条目

-感谢所有帮助。

【问题讨论】:

    标签: oracle plsql dbms-scheduler


    【解决方案1】:

    关于“我想将 id=1 和 id=10 写入 *_SCHEDULER_JOBS 中 Job_A 的条目”的问题有点模糊。

    在过程中,您可以使用 SYS_CONTEXT('USERENV','BG_JOB_ID') 获取调度程序作业的对象 ID,并在 ALL_OBJECTS 中查找所有者/名称。如果作业由与过程相同的用户拥有或已被授予适当的权限,则它可以调用 DBMS_SCHEDULER.SET_ATTRIBUTE 来更改作业。根据它更改的属性,这可能只会在下一次运行作业时生效。

    BG_JOB_ID 仅在作业从调度程序运行时才有效,如果有人在他们自己的会话中执行 dbms_scheduler.run_job 则无效。鉴于多个会话可以同时执行此操作,您可能不希望它们都尝试对作业进行更改。

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2014-11-24
      • 2016-10-09
      • 2015-06-07
      • 2021-10-31
      • 2012-12-10
      • 2017-02-22
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多