【问题标题】:How to update a parameter in a job in Oracle SQL如何在 Oracle SQL 中更新作业中的参数
【发布时间】:2016-08-23 14:47:40
【问题描述】:

我刚刚使用 SQL Developer 内置向导创建了一个作业,我想从我的应用程序中更改所创建作业的参数。 任务是每天7点启动一个存储过程。

在申请中我必须填写:

  1. 禁用:真/假
  2. 时间:10:00

这是我的工作和我想根据应用中选择的内容更新的字段:

我看到了两种方法:

  1. 使字段依赖于表中的值
  2. 创建一个更新值的 pl/sql 块

当然我不知道该怎么做(在第一个选项中 select 语句不起作用,在第二个选项中我不知道如何访问工作字段)

请帮忙

【问题讨论】:

  • 您需要删除并重新创建作业。

标签: plsql oracle-apex


【解决方案1】:
Begin 
dbms_scheduler.disable( 'ATOS."job_email_notifications"' );

DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'ATOS."job_email_notifications"', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0; bysecond=0');--change value--as per need

dbms_scheduler.enable( 'ATOS."job_email_notifications"' );
End;
/

【讨论】:

  • 嘿,谢谢你的回答,但这对我不起作用,错误说:错误报告 - ORA-27476:“ATOS.JOB_EMAIL_NOTIFICATIONS”不存在 ORA-06512:在第 2 行*原因:指定的数据库对象不存在。
  • 发布以下查询的输出:select * from dba_scheduler_jobs where job_name ='JOB_EMAIL_NOTIFICATIONS';
  • ORA-00942:表或视图不存在。也许我有不同的调度程序名称或其他东西?
  • 试试这个 select * from all_scheduler_jobs where job_name ='JOB_EMAIL_NOTIFICATIONS';您似乎有权查看 dba 视图。
【解决方案2】:

使用以下过程根据值进行动态更新

Create or replace procedure change_attributes(a_job_name varchar2, a_param varchar2, a_new_val varchar2)
As
Begin 
dbms_scheduler.disable( a_job_name);

DBMS_SCHEDULER.SET_ATTRIBUTE ( name => a_job_name,attribute => a_param, value => a_new_val);

dbms_scheduler.enable( a_job_name);
End;
/

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多