【问题标题】:Stored Procedure execution time not coming correct存储过程执行时间不正确
【发布时间】:2012-01-25 20:32:41
【问题描述】:

您好试图找出执行 API 调用所花费的时间:这里是代码

DECLARE  
l_time timestamp;   
l_lapsetime  VARCHAR2(100);  
BEGIN  
select systimestamp into l_time from dual;      
--here goes my API call  
select to_char((systimestamp-l_time),'HH24:MI:SS') into l_lapsetime from dual;    
DBMS_OUTPUT.PUT_LINE('Time taken  ' || l_lapsetime);  
END;

我原以为结果会在几毫秒内出现,但我得到的输出是:

Time taken  +000000000 10:30:00.016938000

这次是不是太过分了??

【问题讨论】:

    标签: performance oracle stored-procedures timestamp


    【解决方案1】:

    当您减去两个时间戳时,结果为INTERVAL 类型。

    TO_CHAR 没有在间隔上定义,这里发生的是 Oracle 执行从 INTERVAL 到 VARCHAR2 的标准隐式转换,忽略您的第二个参数。

    如果要将INTERVAL转换为字符,请使用EXTRACT

        SELECT extract(hour FROM v_interval) || ':'
               || extract(minute FROM v_interval) || ':'
               || extract(SECOND FROM v_interval)
          FROM (SELECT &timestamp2 - &timestamp1 v_interval FROM dual)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 2020-01-05
      相关资源
      最近更新 更多