Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 99447ed

Browse files
committed
Improving performance of output buffer processing.
1 parent c1d5ab6 commit 99447ed

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

source/core/output_buffers/ut_output_buffer_base.tpb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,14 @@ create or replace type body ut_output_buffer_base is
179179
loop
180180
fetch l_data into l_clob, l_item_type;
181181
exit when l_data%notfound;
182-
l_lines := ut_utils.clob_to_table(l_clob);
183-
for i in 1 .. l_lines.count loop
184-
dbms_output.put_line(l_lines(i));
185-
end loop;
182+
if dbms_lob.getlength(l_clob) > 32767 then
183+
l_lines := ut_utils.clob_to_table(l_clob);
184+
for i in 1 .. l_lines.count loop
185+
dbms_output.put_line(l_lines(i));
186+
end loop;
187+
else
188+
dbms_output.put_line(l_clob);
189+
end if;
186190
end loop;
187191
close l_data;
188192
end;

source/core/output_buffers/ut_output_table_buffer.tpb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,20 @@ create or replace type body ut_output_table_buffer is
7373
end if;
7474
end;
7575

76+
overriding member procedure lines_to_dbms_output(self in ut_output_table_buffer, a_initial_timeout number := null, a_timeout_sec number := null) is
77+
l_data sys_refcursor;
78+
l_text varchar2(32767);
79+
l_item_type varchar2(32767);
80+
begin
81+
l_data := self.get_lines_cursor(a_initial_timeout, a_timeout_sec);
82+
loop
83+
fetch l_data into l_text, l_item_type;
84+
exit when l_data%notfound;
85+
dbms_output.put_line(l_text);
86+
end loop;
87+
close l_data;
88+
end;
89+
7690
overriding member procedure get_data_from_buffer_table(
7791
self in ut_output_table_buffer,
7892
a_last_read_message_id in out nocopy integer,

source/core/output_buffers/ut_output_table_buffer.tps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ create or replace type ut_output_table_buffer under ut_output_buffer_base (
2020
overriding member procedure send_line(self in out nocopy ut_output_table_buffer, a_text varchar2, a_item_type varchar2 := null),
2121
overriding member procedure send_lines(self in out nocopy ut_output_table_buffer, a_text_list ut_varchar2_rows, a_item_type varchar2 := null),
2222
overriding member procedure send_clob(self in out nocopy ut_output_table_buffer, a_text clob, a_item_type varchar2 := null),
23+
overriding member procedure lines_to_dbms_output(self in ut_output_table_buffer, a_initial_timeout number := null, a_timeout_sec number := null),
2324
overriding member procedure get_data_from_buffer_table(
2425
self in ut_output_table_buffer,
2526
a_last_read_message_id in out nocopy integer,

0 commit comments

Comments
 (0)