【发布时间】:2018-03-27 07:31:51
【问题描述】:
我使用 Ref Cursor 作为 PLSQL 过程的输出参数。我需要在日志表中维护 proc 的确切开始和结束时间。
下面的虚拟代码:
Procedure(P1 IN NUMBER, P_REF_CUR OUT SYS_REFCURSOR)
IS
V_TS TIMESTAMP;
BEGIN
V_TS := SYSTIMESTAMP;
<Business logic here to generate SELECT query for Ref Cursor...>;
OPEN P_REF_CUR FOR <SELECT QUERY>;
INSERT INTO LOG_TABLE(ID, STR_TIME,END_TIME,..) VALUES
(1,V_TS,SYSTIMESTAMP,...);
END;
Ref Cursor 的选择查询有时需要 2-3 分钟才能执行,但在日志表中,我看到 STR_TIME 和 END_TIME 之间的差异只有几秒钟。
如何捕获过程所花费的总时间,包括查询执行时间?
【问题讨论】:
-
总“查询执行时间”到底是什么意思? 2-3 分钟大概包括获取和显示所有数据,根据使用的工具,可能会有额外的网络延迟。我假设您想要打开-获取-关闭和处理整个结果集的相应总时间?。
-
报告工具调用此过程生成报告。此报告生成需要一些时间,主要是查询执行时间,这是我想要查找并登录我的日志表的时间。如果我 EXECUTE "SELECT COUNT(*) INTO VAR FROM (CURSOR SELECT QUERY)" ,它会给我查询执行时间吗?
标签: oracle plsql ref-cursor