@@ -49,7 +49,7 @@ create or replace type body ut_output_bulk_buffer is
4949 select /*+ no_parallel */ self.output_id, self.last_write_message_id + rownum, t.column_value, a_item_type
5050 from table(a_text_list) t
5151 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;
5353 commit;
5454 end;
5555
@@ -87,15 +87,16 @@ create or replace type body ut_output_bulk_buffer is
8787 exit when l_data%notfound;
8888 end loop;
8989 close l_data;
90+ self.remove_buffer_info();
9091 end;
9192
9293 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 );
9495 l_already_waited_sec number(10,2) := 0;
9596 l_sleep_time number(2,1);
9697 l_exists integer;
9798 l_finished boolean := false;
98- l_data_produced boolean;
99+ l_data_produced boolean := false ;
99100 l_producer_active boolean := false;
100101 l_producer_started boolean := false;
101102 l_producer_finished boolean := false;
@@ -115,11 +116,13 @@ create or replace type body ut_output_bulk_buffer is
115116 l_producer_active := (self.get_lock_status() <> 0);
116117 l_producer_started := (l_producer_active or l_data_produced ) or l_producer_started;
117118 l_producer_finished := (l_producer_started and not l_producer_active) or l_producer_finished;
118-
119119 l_finished :=
120120 self.timeout_producer_not_finished(l_producer_finished, l_already_waited_sec, a_timeout_sec)
121121 or self.timeout_producer_not_started(l_producer_started, l_already_waited_sec, lc_init_wait_sec)
122122 or l_producer_finished;
123+
124+ dbms_lock.sleep(l_sleep_time);
125+ l_already_waited_sec := l_already_waited_sec + l_sleep_time;
123126 end loop;
124127
125128 open l_results for
@@ -152,8 +155,8 @@ create or replace type body ut_output_bulk_buffer is
152155 exit when l_data%notfound;
153156 end loop;
154157 close l_data;
155- return;
156158 self.remove_buffer_info();
159+ return;
157160 end;
158161
159162end;
0 commit comments