如何在 Oracle SQL 中更新作业中的参数

Posted

技术标签:

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

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

在申请中我必须填写:

    禁用:真/假 时间:10:00

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

我看到了两种方法:

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

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

请帮忙

【问题讨论】:

您需要删除并重新创建作业。 【参考方案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 视图。 让我们continue this discussion in chat。【参考方案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;
/

【讨论】:

以上是关于如何在 Oracle SQL 中更新作业中的参数的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库如何用update批量更新某列数据中的字段

oracle数据库如何用update批量更新某列数据中的字段

oracle中的存储过程有啥作用,该怎么理解?(数据更新的话用update语句不就完了吗)

如何处理 SQL 代理作业错误?

如何更新 Oracle 中的“长”数据类型?

如何在Oracle中仅将列用作1行到1行返回pl / sql函数中的参数