@@ -49,7 +49,7 @@ create or replace type body ut_output_bulk_buffer is
49
49
select /*+ no_parallel */ self.output_id, self.last_write_message_id + rownum, t.column_value, a_item_type
50
50
from table(a_text_list) t
51
51
where t.column_value is not null or a_item_type is not null;
52
- self.last_write_message_id := self.last_write_message_id + SQL %rowcount;
52
+ self.last_write_message_id := self.last_write_message_id + sql %rowcount;
53
53
commit;
54
54
end;
55
55
@@ -87,15 +87,16 @@ create or replace type body ut_output_bulk_buffer is
87
87
exit when l_data%notfound;
88
88
end loop;
89
89
close l_data;
90
+ self.remove_buffer_info();
90
91
end;
91
92
92
93
overriding member function get_lines_cursor(a_initial_timeout number := null, a_timeout_sec number := null) return sys_refcursor is
93
- lc_init_wait_sec constant number := coalesce(a_initial_timeout, 30 );
94
+ lc_init_wait_sec constant number := coalesce(a_initial_timeout, 10 );
94
95
l_already_waited_sec number(10,2) := 0;
95
96
l_sleep_time number(2,1);
96
97
l_exists integer;
97
98
l_finished boolean := false;
98
- l_data_produced boolean;
99
+ l_data_produced boolean := false ;
99
100
l_producer_active boolean := false;
100
101
l_producer_started boolean := false;
101
102
l_producer_finished boolean := false;
@@ -115,11 +116,13 @@ create or replace type body ut_output_bulk_buffer is
115
116
l_producer_active := (self.get_lock_status() <> 0);
116
117
l_producer_started := (l_producer_active or l_data_produced ) or l_producer_started;
117
118
l_producer_finished := (l_producer_started and not l_producer_active) or l_producer_finished;
118
-
119
119
l_finished :=
120
120
self.timeout_producer_not_finished(l_producer_finished, l_already_waited_sec, a_timeout_sec)
121
121
or self.timeout_producer_not_started(l_producer_started, l_already_waited_sec, lc_init_wait_sec)
122
122
or l_producer_finished;
123
+
124
+ dbms_lock.sleep(l_sleep_time);
125
+ l_already_waited_sec := l_already_waited_sec + l_sleep_time;
123
126
end loop;
124
127
125
128
open l_results for
@@ -152,8 +155,8 @@ create or replace type body ut_output_bulk_buffer is
152
155
exit when l_data%notfound;
153
156
end loop;
154
157
close l_data;
155
- return;
156
158
self.remove_buffer_info();
159
+ return;
157
160
end;
158
161
159
162
end;
0 commit comments