小弟是新手!遇到个问题
如何测试oracle带输出参数自定义函数执行时间
谢谢!

解决方案 »

  1.   

        time_before   :=   DBMS_UTILITY.GET_TIME;     
            你的运行过程;     
            time_after   :=   DBMS_UTILITY.GET_TIME;     
            DBMS_OUTPUT.PUT_LINE   (time_after   -   time_before);     
      

  2.   


    create or replace function func1 (pa1 out varchar2) return varchar2 is
    begin
        /* 設置一個循環,要不執行太快,時間差為0 */
        for i in 1..10000000 loop
           null;
        end loop;
        pa1 := 'call from func1';
        return 'OK';
    end;declare
      time_before number;
      time_after number;
      pv varchar2(20);
      ret varchar2(20);
    begin
      time_before := DBMS_UTILITY.GET_TIME;
      ret := func1(pv);
      time_after := DBMS_UTILITY.GET_TIME;
      dbms_output.put_line(time_after - time_before);
      dbms_output.put_line(pv);
    end;
      

  3.   


    理解错误了,不好意思,你是不是要实现类似JAVA里的SLEEP()的功能?
    1:你需要在sys用户下执行grant all on dbms_lock to user(用户)
    2:DBMS_LOCK.SLEEP (seconds  IN NUMBER);
      

  4.   

    是这样的 
    我定义了一个带输入 输出参数的函数,我现在create了一个测试表,向表里插入了几万条记录,
    比方说 我想测试当从表里调用1万条记录来调用这个函数执行时间是多少,2万条记录调用这个函数执行时间是多少
      

  5.   

    DECLARE 
       time_before BINARY_INTEGER; 
       time_after BINARY_INTEGER; 
    BEGIN 
       time_before := DBMS_UTILITY.GET_TIME; 
       --你的运行SQL操作; 
       time_after := DBMS_UTILITY.GET_TIME; 
       DBMS_OUTPUT.PUT_LINE (time_after - time_before); 
    END;那只能在你执行的语句前后加以上红色部分
    或者可以在SQL PLUS设置时间显示命令后直接查看
    SQL> set timing on; 
      

  6.   

    1、dbms_utility.get_time
    2、使用systimestamp记录执行时间戳,然后相减
    3、使用dbms_profile,如果没安装要先安装$ORACLE_HOME/rdbms/admin/profload.sql
         执行完成后查看PLSQL_PROFILER_DATA表
    BEGIN
      DBMS_PROFILER.START_PROFILER('any comment');
      --你的语句
      DBMS_PROFILER.STOP_PROFILER;
    END;