sql - 每 30 秒运行一次 oracle 查询 (SQL),一旦计数等于 8,它应该继续进行并完成工作

标签 sql oracle plsql scheduled-tasks dbms-scheduler

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

在 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

感谢你的帮助。

最佳答案

您可以创建一个作业并使用 安排它。 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>

上述工作将根据您的 开始系统时间戳 ,然后执行程序 my_job_procedure 30 秒 .

查看更多示例 here .

关于sql - 每 30 秒运行一次 oracle 查询 (SQL),一旦计数等于 8,它应该继续进行并完成工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571657/

相关文章:

c# - MySQL - 表触发器阻止插入表并且不返回错误?

sql - 在查询中使用人类可读的常量

java - XML 到字符串在一个数据库上工作正常,但在第二个数据库上工作不正常

sql - 如何确定存储过程最后一次在 Oracle 中修改或编译的时间?

sql - 如何在 PLSQL 中修剪日期?

mysql - 如何使用MySQL获取特定路径中的对象

sql - 如何像sql语句一样转义postgres中的字符串?

sql - 使用查询检测 SQL Server 利用率

sql - 要么在 select sql 中的 not both 子句中

sql - PLS-00488 : object "string" must be a type or subtype - but it is a type