Вы уверены, что это не проблема с вашим запросом для получения данных из plsql_profiler_units
?
Я пробовал это:
Create Procedure sub_procedure As
Begin
dbms_output.put_line('test');
End;
Create Package test_package As
Procedure test;
End;
Create Package Body test_package As
Procedure test As Begin
For i In 1 .. 10 Loop
If(i<=5) Then
sub_procedure;
End If;
End Loop;
End;
End;
Begin
DBMS_PROFILER.start_profiler(SYSDATE);
test_package.test;
DBMS_PROFILER.stop_profiler;
End;
и этот простой запрос
Select uni.unit_name, dat.line#, dat.total_occur
From plsql_profiler_data dat
Join plsql_profiler_units uni On ( uni.runid = dat.runid
And uni.unit_number = dat.unit_number )
дает мне ожидаемый результат, показывая также пакеты и процедуры:
<anonymous> 1 0
<anonymous> 2 0
<anonymous> 3 2
<anonymous> 4 1
<anonymous> 5 0
TEST_PACKAGE 2 0
TEST_PACKAGE 3 11
TEST_PACKAGE 4 5
TEST_PACKAGE 5 6
TEST_PACKAGE 8 1
SUB_PROCEDURE 1 0
SUB_PROCEDURE 3 5
SUB_PROCEDURE 4 5