1
我公司開發的PL/SQL存儲過程返回一個sys_refcursor
存儲過程的sys_refcursor輸出是否被緩存?
create or replace procedure updateProgress(ref_out out sys_refcursor
, v_context in number)
is
begin
open ref_out
for select serial# serialnumber
, time_remaining remainingtime
, elapsed_seconds elapsedtime
, (100 * sofar)/totalwork accomplishedpercentage
from v$session_longops
where target = 9
and target_desc = 'inserting nonsense'
and context = v_context;
end updateProgress;
我要在一個會話中執行該過程的次數。在第一次調用之後,每個後續調用都會再次執行查詢還是第一個查詢的結果被緩存以供後續調用重用?
你的答案是非常有用的。 'v $ session_longops'並不理想,但如果我不使用它,我該怎麼辦? – 2012-02-10 03:06:29
對於長時間運行的單個SQL語句,您需要使用'v $ session_longops'。對於PL/SQL,您可以將執行信息記錄到表中,並且可以使用'dbms_application_info'包。 – 2012-02-10 07:13:21