我们有一个系统允许用户将数据连接到数据库,以设置各种规则,用于在数据合并到主表之前更改数据.例如,订单可能有一条规则,根据客户的地址设置要使用的送货公司.
这最初仅用于对正在加载的数据进行操作,因此它仅限于可以从select语句调用的函数.需要注意的一点是,数据尚未在目标表中.
现在,我有一个项目需要更新到另一个表(很好 - 我可以使用autonomous_transaction pragma).但是,我需要运行一些需要在数据运行之前插入数据的函数(即它们是聚合数据).
所以,我真的想排队运行我的程序直到一段时间后(它不依赖于时间).
我如何在Oracle中执行此操作?当我只是想做一些简单的事情时,丰富的文档是相当的压倒性的.
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;