Oracle如何在一段时间后自动触发某个事件,只触发一次?

Oliverway 2018-11-18 11:00:26
Oracle如何在一段时间后自动触发某个事件,只触发一次?
网上搜了搜用的定时器都是循环触发的,可是我只想触发一次,该怎么解决啊
求大神指教!!!
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 Oliverway的回复:
[quote=引用 2 楼 horses 的回复:] Oracle 中的定时器支持循环执行,当然也可以只运行一次,方法就是不设置运行间隔时间:
CREATE TABLE t1(id INTEGER);

VARIABLE jobno number;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 
      'insert into t1 values(1);',
      SYSDATE + 5/24/60, -- 5分钟后支持
      NULL); -- 再也不执行
   COMMIT;
END;
/
具体可以参考 Oracle 文档:https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956 更强的的 DBMS_SCHEDULER :https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_SCHEDULER.html#GUID-A24DEB5D-2EAF-4C0B-8715-30DC947B3F87
谢谢了!在存储过程中可以用execute immediate来写一个job吗[/quote] excute immediate可以执行上面那种PLSQL块,就可以创建job。不过你在存储过程直接创建job就好了,不用那么复杂
卖水果的net 2018-11-20
  • 打赏
  • 举报
回复
可以, execute immediate 是动态执行。
  • 打赏
  • 举报
回复
Oracle 中的定时器支持循环执行,当然也可以只运行一次,方法就是不设置运行间隔时间:
CREATE TABLE t1(id INTEGER);

VARIABLE jobno number;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 
      'insert into t1 values(1);',
      SYSDATE + 5/24/60, -- 5分钟后支持
      NULL); -- 再也不执行
   COMMIT;
END;
/
具体可以参考 Oracle 文档:https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956 更强的的 DBMS_SCHEDULER :https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_SCHEDULER.html#GUID-A24DEB5D-2EAF-4C0B-8715-30DC947B3F87
Oliverway 2018-11-19
  • 打赏
  • 举报
回复
引用 2 楼 horses 的回复:
Oracle 中的定时器支持循环执行,当然也可以只运行一次,方法就是不设置运行间隔时间:
CREATE TABLE t1(id INTEGER);

VARIABLE jobno number;
BEGIN
   DBMS_JOB.SUBMIT(:jobno, 
      'insert into t1 values(1);',
      SYSDATE + 5/24/60, -- 5分钟后支持
      NULL); -- 再也不执行
   COMMIT;
END;
/
具体可以参考 Oracle 文档:https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_JOB.html#GUID-8C62D808-D7A3-4D21-B87F-A229B7CE1956 更强的的 DBMS_SCHEDULER :https://docs.oracle.com/en/database/oracle/oracle-database/18/arpls/DBMS_SCHEDULER.html#GUID-A24DEB5D-2EAF-4C0B-8715-30DC947B3F87
谢谢了!在存储过程中可以用execute immediate来写一个job吗
Oliverway 2018-11-19
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
楼主研究一下 dbms_job ,应该你想的需求。
谢谢了!在存储过程中可以用execute immediate来写一个job吗
卖水果的net 2018-11-18
  • 打赏
  • 举报
回复
楼主研究一下 dbms_job ,应该你想的需求。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧