create or replace procedure SP_TEST (execsql in varchar2,outtime out varchar2) is
time1 int;
time2 int;
    begin
    time1 := dbms_utility.get_time;
    EXECUTE IMMEDIATE execsql;
    time2 := dbms_utility.get_time;
    outtime := '本条语句执行共耗费时间: ' || round( (time2-time1)/100, 2)  || ' 秒';
dbms_output.put_line('本条语句执行共耗费时间: ' || round( (time2-time1)/100, 2)  || ' 秒');
End SP_TEST;
我写了一个的存储过程评价SQL语句效率,但是每次执行SQL语句好像都是0,请问应该如何改进或者有其他什么好的工具可以测试。谢谢

解决方案 »

  1.   

    在sql*plus中
    set timing on
    执行你的sql
    能看到执行时间。或者用toad的query view也能看到。
      

  2.   

    修改你的代码如下。
    create or replace procedure SP_TEST (execsql in varchar2,outtime out varchar2) is
    time1 int;
    time2 int;
        begin
        time1 := sysdate;
        EXECUTE IMMEDIATE execsql;
        time2 := sysdate;
        outtime := '本条语句执行共耗费时间: ' || round( (time2-time1)/100, 2)  || ' 秒';
    dbms_output.put_line('本条语句执行共耗费时间: ' || round( (time2-time1)/100, 2)  || ' 秒');
    End SP_TEST;
      

  3.   

    oracle 的执行计划还不够吗?何必舍近求远呢