转自:http://usa2288.blog.sohu.com/139261013.html
DBMS_UTILITY.get_time主要用于比较时间差,精确到毫秒,就是秒后面2位小数。如果是TO_CHAR(SYSDATE,'SSSSS')单纯输出的是秒,如果超过的话,则这个秒是按照四舍五入表示的,例如是5.6秒,你看到的就是6秒。
秒 = DBMS_UTILITY.get_time / 100
如下的这个例子, 有可能会输出502, 503 .. 中间的间隔是 5 秒. 你可以理解成 5.02 秒.
DECLARE
start_time NUMBER;
finish_time NUMBER;
elapsed_time NUMBER(5);
BEGIN
start_time := DBMS_UTILITY.get_time;
-- do something
DBMS_LOCK.sleep(5);
finish_time := DBMS_UTILITY.get_time;
elapsed_time := finish_time - start_time;
dbms_output.put_line(elapsed_time);
END;
如下的这个例子, 会输出5, 意思就是间隔5秒.
DECLARE
start_time CHAR(5);
finish_time CHAR(5);
elapsed_time NUMBER(5);
BEGIN
SELECT TO_CHAR(SYSDATE,'SSSSS')
INTO start_time
FROM dual;
-- do something
DBMS_LOCK.sleep(5);
SELECT TO_CHAR(SYSDATE,'SSSSS')
INTO finish_time
FROM dual;
elapsed_time := finish_time - start_time;
dbms_output.put_line(elapsed_time);
END;
3748

被折叠的 条评论
为什么被折叠?



