日期:2014-05-17  浏览次数:20952 次

关于执行一段代码的计时问题
比如  

开始一个计时

执行一个function

结束计时 

输出时间 



就想得到执行function所花费的时间


------解决方案--------------------
create or replace function f_time return number is

  stime date;
  etime date;
  m     number;
  n     number;
begin
  stime := sysdate;
  for i in 1 .. 9999999 loop
    n := n + i;
  end loop;

  etime := sysdate;
  m     := (etime - stime) * 24 * 60 * 60;
  dbms_output.put_line('共花费' 
------解决方案--------------------
 m 
------解决方案--------------------
 '秒');
  return m;
end;

------解决方案--------------------
你的要求应该是这个:
create or replace function f_time return number is
  n number := 0;
begin
  for i in 1 .. 9999999 loop
    n := n + i;
  end loop;
  return n;
end;
/


declare
  stime date;
  etime date;
  m     number;
  n     number;
begin
  stime := sysdate;
  n     := f_time;
  etime := sysdate;
  m     := (etime - stime) * 24 * 60 * 60;
  dbms_output.put_line('共花费' 
------解决方案--------------------
 m 
------解决方案--------------------
 '秒');
end;

------解决方案--------------------
和你说个思路,定义两个变量,在函数的执行前后分别将系统时间赋值给变量。然后再相减。把得到的值作为返回值进行输出就行了。
------解决方案--------------------

sqlplus 下

set timing on

select fun() from dual

执行时间 :xxxxxx