Время выполнения хранимой процедуры не подходит - PullRequest
2 голосов
/ 22 декабря 2011

Привет пытался выяснить время, затраченное на выполнение вызова 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

Не слишком ли много на этот раз ??

1 Ответ

3 голосов
/ 22 декабря 2011

Когда вы вычтете две метки времени, результат будет иметь тип 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)
...