如何在 PL/SQL 中设置特定日期对表的操作执行?
Posted
技术标签:
【中文标题】如何在 PL/SQL 中设置特定日期对表的操作执行?【英文标题】:How to set execution of operation on table on specific day in PL/SQL? 【发布时间】:2020-06-10 11:54:39 【问题描述】:我必须对表进行一些操作,即在一周中的特定日期更新,即每周一仅使用存储过程 - 没有触发器。
I.E.我在存储过程中有:
update table_1
set col1 = val1
where conditions;
我想每周在特定的日子进行这项工作。
我会很高兴有任何想法。
【问题讨论】:
【参考方案1】:我建议使用 Oracle 作业调度程序。您可以将作业设置为随时运行。您可以阅读更多关于作业调度程序here 的信息,我在下面提供了一个示例。
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'YOUR_JOB_NAME',
job_type => 'STORED_PROCEDURE',
job_action => 'SOME_SCHEMA.SOME_PROC',
start_date => to_date('20180313-23:30','YYYYMMDD-HH24:MI') AT TIME ZONE 'US/Eastern',
repeat_interval => 'FREQ=DAILY;INTERVAL=1', /* every day */
auto_drop => FALSE,
comments => 'Job to do something useful',
enabled => true);
【讨论】:
谢谢。我同意这将是解决这个问题的好方法,但我必须不用调度程序。 @Ron - “我想每周在特定的一天工作” - 为了满足这个要求,你需要某种作业调度器,即使它不是 Oracle 的。 "此任务的正式推荐。不是我的想法"。好吧,按你说的做,一个调度器,some 调度器,是一个绝对的要求。我会推后问一些问题。就目前而言,您的“要求/建议”就像被要求在不使用汽油的情况下驾驶汽油动力汽车。 您有两种选择:1) 要求员工每周一键入“执行 myprocedure”或 2) 让计算机为您执行此操作。执行此操作的软件通常称为调度程序。 @William Robertson - 但是如果 Oracle 实例被关闭,proc 将停止并且在实例重新启动时不会自动重新启动。以上是关于如何在 PL/SQL 中设置特定日期对表的操作执行?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL 或 PL/SQL:如何仅在上升趋势或下降趋势结束时识别烛台形态并在列中设置标志?