呵呵,不可能!
唯一的判斷就是依靠經驗,如果你經常執行存储过程abc(),
則可以根據經驗來判斷大概需要多少時間!
這好比我想知道自己能活多久,隻能根據人類大概的平均年齡
來判斷自己能活100歲左右:)

解决方案 »

  1.   

    "执行了很久都没有执行完"
        對於這樣的情況有多種可能:
        1.數據量很大很大,
        2.死循環,
        3.PL/SQL語句優化不夠,這方面東東在論壇理有很多可以搜索一下
        4.配置
        5.發生了鎖的情況,你可以查詢以下語句查看:
        SELECT DISTINCT A.*,B.OBJECT_NAME,D.TYPE,C.USERNAME,
               C.STATUS,C.LOCKWAIT,C.TERMINAL,C.PROGRAM
        FROM   V$LOCKED_OBJECT A, ALL_OBJECTS B, V$SESSION C, V$LOCK D
        WHERE  A.OBJECT_ID=B.OBJECT_ID
        AND    A.SESSION_ID=C.SID
        AND    A.LOCKED_MODE=D.LMODE
    /
      

  2.   

    1.你可以建立一个表procedure_time(procedure_name,run_id,begin_time,end_time).
    2.在你的procedure begin的第一行加
    v_begin_time:=sysdate;v_run_id:=1;
    在你的procedure end的前一行加
    v_end_time:=sysdate;insert into procedure_time(v_procedure_name,v_run_id,v_begin_time,v_end_time);
    3.end_time减去begin_time就是procedure的执行时间.
      

  3.   

    好像没有办法得到整个存储过程的执行时间。
    但是可以得到该存储过程正在执行的某个长时间的sql的估计时间,通过查询
    v$session_longops得到