代码之家  ›  专栏  ›  技术社区  ›  Greg Reynolds

Oracle:如何“以后”运行存储过程

  •  1
  • Greg Reynolds  · 技术社区  · 16 年前

    我们有一个系统,允许将数据连接到数据库的用户设置各种规则,这些规则用于在数据合并到主表之前更改数据。例如,订单可能有一个规则,该规则根据客户的地址设置要使用的配送公司。

    这最初是为了仅对加载的数据进行操作,因此它仅限于可以从select语句调用的函数。需要注意的一点是,数据还不在目标表中。

    在Oracle中如何实现这一点?当我只想做一些简单的事情时,文档的丰富性是相当大的。

    2 回复  |  直到 16 年前
        1
  •  5
  •   Brian    16 年前
    BEGIN
      DBMS_SCHEDULER.create_job (
        job_name => 'daily_tasks_job',
        job_type              => 'STORED_PROCEDURE',
        job_action            => 'prc_daily_tasks',
      repeat_interval       => 'FREQ=DAILY; INTERVAL=1',
      enabled               => TRUE,
      comments              => 'Calls stored procedure once a day'
      );
    END;
    
    BEGIN
         DBMS_SCHEDULER.create_job(
        job_name        => 'SHELL_JOB',
        repeat_interval  => 'FREQ=DAILY; BYHOUR=2',
        job_type         => 'EXECUTABLE',
        job_action       => '/u01/app/oracle/admin/tools/shell_job.sh',
        enabled          => TRUE,
        comments         => 'Perform stuff'
    );
    END;
    
        2
  •  4
  •   Jens Schauder    16 年前

    标准的解决方法是使用dbms_作业来调度调用该过程的作业。