单纯依靠procedure好像实现不了,你可以通过前台代码控制啊

解决方案 »

  1.   


    time_star=SYSTIMESTAMP 
    loop
       time_tmp=SYSTIMESTAMP 
       if time_tmp-time_star>5 then
           exit loop
       endif
    end loop
      

  2.   

    这样可以吗?请问我的EXECUTE IMMEDIATE MYSQL在哪儿执行呀?
    是否能有多线程的办法可以解决呢?
    谢谢!
      

  3.   

    从PL/SQL引擎的原理来说,提交SQL语句后是不能再强加其他控制了。因此唯一的方法就是不在PL/SQL中使用该逻辑,而是在调用环境例如C, Java中进行控制。使用线程,超过5s就终止该线程。
      

  4.   

    可是我在java中终止该查询进程后,数据库的sql应该还会继续执行呀。这样的话客户端虽然看到失败信息,但是数据库的压力还是持续哦。
      

  5.   

    PL/SQL本身是一个预编译、实时解释执行的语句系统,因此你在执行一个PL/SQL的过程中是不能对其执行的时间进行控制的,唯一的办法就是将你的业务逻辑写在PROC或者是ORACLE JAVA等语言下,这样你可以使用C++和JAVA的线程机制来控制逻辑的执行时间
      

  6.   

    可以在profile中进行限制,在加入profile之前应先将RESOURCE_LIMIL设置为True。
    Alter system set RESOURCE_LIMIL=true;
    在添加相应的profile文件:
    Alter profile myprofile limit CPU_PER_CALL=500;
    这样用户在执行所有的Sql语句时,只要超过5秒,就会释放CPU资源,其中CPU_PER_CALL表示每个调用所占用的最长CPU时间,以百分之一秒为单位
      

  7.   

    请参看http://community.csdn.net/Expert/TopicView1.asp?id=3107000