如何在 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批量更新某列数据中的字段