限制存储过程的某个语句的执行时间
我现在的ORACLE通过透明网关连接了一个SQL SERVER数据库.然后在ORACLE的一个存储过程里面需要调用SQL SERVER的存储过程.但有可能调用的时候出现网络问题,而致使oracle存储过程一直等待调用sql server存储过程的返回直到超时,但这个超时时间可能会很长,所以,我现在希望能在ORACLE存储过程里面人为的限制调用SQL SERVER存储过程的等待时间,请问有什么方法或语句可以实现?

解决方案 »

  1.   

    oracle好象没有这样的功能这样的设计好象不太合理.是不是有其它代替办法呢
      

  2.   

    有很多原因会影响ORACLE存储过程的执行时间,这个想法弄不来的。
      

  3.   

    新增一张类似日志表:
    log_StoO(
    log_id,               --存储过程执行id,可用序列,并记住此值
    begintime,            --存储过程开始执行时间
    endtime,              --存储过程结束执行时间
    maxtime,              --允许存储过程执行时间
    sucess_flag           --成功标志位,1-成功,0-失败
    )
    做一个JOB,一定时间间隔便执行一次如下的存储过程。做一个存储过程:
    对table log_StoO中的sucess_flag=0的记录进行查找,判断如果begintime+maxtime>sysdate,
    则判定此log_id超时,此进程已死,然后做关联查找并杀死此进程(本人只提供此方法,实际操作时可能还有好多细节要等LZ来完善)。