4

我在互联网上寻找解决问题的方法,但找不到适合目的的解决方案。可以请一些例子帮助和指导我。

在 Oracle em 控制台中,我有一个运行至少 1 小时的作业,并且在作业运行过程中它将更新 Oracle 中的几个表。

基本上我希望 SQL 查询每 1 分钟运行一次,一旦计数等于 8,它应该停止并继续前进....

TABLE_NAME:TASK - 此表将在 1 小时处理期间更新

ID TYPE_ID VALUE
1  12      TEST1
2  13      TEST2
3  14      TEST3
4  15      TEST4
5  16      TEST5

感谢你的帮助。

4

1 回答 1

4

您可以创建一个作业并使用DBMS_SCHEDULER安排它。您的所有逻辑都可以驻留在 PL/SQL过程中,然后安排该过程以所需的时间间隔执行。

例如,

SQL> BEGIN
  2    DBMS_SCHEDULER.create_job (
  3      job_name        => 'test_job',
  4      job_type        => 'PLSQL_BLOCK',
  5      job_action      => 'BEGIN my_job_procedure; END;',
  6      start_date      => SYSTIMESTAMP,
  7      repeat_interval => 'freq=0; byminute=0; bysecond=30;',
  8      end_date        => NULL,
  9      enabled         => TRUE,
 10      comments        => 'Job defined entirely by the CREATE JOB procedure.');
 11  END;
 12  /

PL/SQL procedure successfully completed.

SQL>
SQL> SELECT JOB_NAME, ENABLED FROM DBA_SCHEDULER_JOBS where job_name ='TEST_JOB'
  2  /

JOB_NAME                 ENABL
--------------------     -----
TEST_JOB                 TRUE

SQL>

上述作业将根据您的SYSTIMESTAMP启动,然后my_job_procedure30 秒执行一次该过程。

在此处查看更多示例。

于 2015-06-01T11:05:58.710 回答