日常使用中我们有时经常需要计算语句或者程序的运行时间,可是有时set timing on又不可用比如我在一个程序段中:declare v_sql varchar2(1000); begin v_sql := 'insert into test values (:i)'; for i in 1 .. 100000 loop execute immediate v_sql using i; end loop; commit; end; 这种情况下set timing on就不好计算我的执行时间了,那我们就可能需要用到dbms_utility.get_time来计算时间: SQL> declare 2 v_sql varchar2(1000); 3 s number; 4 begin 5 v_sql := 'insert into test values (:i)'; 6 s := dbms_utility.get_time; 7 for i in 1 .. 100000 loop 8 execute immediate v_sql 9 using i; 10 end loop; 11 commit; 12 dbms_output.put_line(dbms_utility.get_time - s); 13 end; 14 / 320 PL/SQL procedure successfully completed 那么这个320是多长时间呢? 我们再来小测试一把就可以知道它是何单位了: DECLARE 2 i NUMBER; 3 j NUMBER; 4 BEGIN 5 i := dbms_utility.get_time; 6 dbms_lock.sleep(1); 7 j := dbms_utility.get_time; 8 dbms_output.put_line(j - i); 9 END; 10 / 100 PL/SQL procedure successfully completed sleep 1s它得出的结果是100,其他的你应该明白了吧! |