过程里实现延迟倒计时

来源:互联网 发布:淘宝买的万菊芬紫砂壶 编辑:程序博客网 时间:2024/06/05 08:40

工作中遇到一个这样的需求:对同样的信息需要发送给两个人,但是有一个人必须提前一小时收到。刚开始是想到用两个过程,设定定时任务相隔一个小时即可。但是总感觉这样不好,想在一个过程里就完成这个事情。最后写了一个延迟的过程,称为睡眠过程sleep。在某个过程中需要延迟一个小时,sleep(3600)这样调用即可。

CREATE OR REPLACE PROCEDURE SLEEP(TM IN INTEGER) IS
  /*实现延迟功能,传入参数为延迟的秒数*/
  END_DT      DATE;
  V_RESULT      VARCHAR2(5);
BEGIN
  END_DT := SYSDATE + TM / (24 * 60 * 60);
  WHILE SYSDATE < END_DT LOOP
    NULL;
  END LOOP;
  RETURN;
EXCEPTION
  WHEN OTHERS THEN
    BEGIN
      P_PUB_ERROR_LOG(V_RESULT,
                      SQLCODE,
                      SQLERRM,
                      'SLEEP');
      ROLLBACK;
    END;
END;


原创粉丝点击