应该有吧,不过为什么要这个function呢?人家做存储过程都是要越快越好的哦!你为什么不把你的存储过程拆成两个,在两个存储过程的中间延迟呢??

解决方案 »

  1.   

    我的存储过程实现的功能是检查某个单据是否已到。如果没到就等待一会儿。我在MSSQL中已经实现了,但是ORACLE中找来找去找不到简单的sleep语句。
      

  2.   

    我想起以前用vb时不用sleep的办法是:
    做个for的空循环来实现延迟。
    例如:
    for i in 1..100000 
    loop
    null;
    end loop;
      

  3.   

    存储过程占用资源较多,应该尽可能减少他的执行时间,何况花费时间多的话,会导致锁的时间延长
    你可以在调用存储过程的语言中加上判断,如单据没到,就wait 0.5 sec,再重复调用存储过程,总比在存储过程中wait要好!
    纯属私人意见
      

  4.   

    天下有雪的方法不好!
    用n个空循环来实现延迟,首先会消耗大量的CPU资源,几个这样的进程并发,你的服务器就半死了;其次不同的CPU有不同的处理速度,怎么可以达到准确的0.5 sec?
      

  5.   

    各位的意见挺对的。不是我想在存储过程中使用延迟,而是我不得不使用。因为我目前需要从一个既有系统将数据库从MSSQL迁移到ORACLE。如果不使用延迟的话,势必引起前台程序的改变,而前台程序根本不属于我管,变不了。
    在MSSQL中用waitfor time语句即可。哎...
      

  6.   

    oracle也有wait 语句,但我没有用过,你查一下。
      

  7.   

    I GOT IT!
    It's DBMS_LOCK.SLEEP(secends in number),You'd better try it