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

Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fixed a bug with capturing DBMS_OUTPUT before test run.
  • Loading branch information
jgebal committed May 30, 2018
commit e53b01ec88340a7f8f405dd2d4eec0f3a3244f11
15 changes: 8 additions & 7 deletions source/core/ut_utils.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -437,28 +437,29 @@ procedure append_to_clob(a_src_clob in out nocopy clob, a_clob_table t_clob_tab,
procedure save_dbms_output_to_cache is
l_status number;
l_line varchar2(32767);
l_line_no integer := 1;
l_offset integer := 0;
l_lines ut_varchar2_rows := ut_varchar2_rows();
c_lines_limit constant integer := 100;
pragma autonomous_transaction;

procedure flush_lines is
procedure flush_lines(a_lines ut_varchar2_rows, a_offset integer) is
begin
insert into ut_dbms_output_cache (seq_no,text)
select rownum, column_value
from table(l_lines);
l_lines.delete;
select rownum+a_offset, column_value
from table(a_lines);
end;
begin
loop
dbms_output.get_line(line => l_line, status => l_status);
exit when l_status = 1;
l_lines := l_lines multiset union all ut_utils.convert_collection(ut_utils.clob_to_table(l_line||chr(7),4000));
if l_lines.count > c_lines_limit then
flush_lines();
flush_lines(l_lines, l_offset);
l_offset := l_offset + l_lines.count;
l_lines.delete;
end if;
end loop;
flush_lines();
flush_lines(l_lines, l_offset);
commit;
end;

Expand Down