过程里实现延迟倒计时

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值