Since I was working on Oracle EBS and/or Fusion, I can only use FND_FILE.PUT_LINE.
FND_FILE is a seeded package within Oracle Applications (both EBS and Fusion) and prints to a specific directory in the file system. Two common usages are:
fnd_file.put_line (fnd_file.OUTPUT, p_message );
and
fnd_file.put_line (fnd_file.LOG, p_message );
p_message has a data type of VARCHAR2. This means it's limited to 32767 bytes. So how can we print a huge XML when we're limited to 32767 characters? The Answer is Chunking.
Taken from a StackOverflow post, we will chunk the XML into pieces that FND_FILE.PUT_LINE can process.
Below is an Example:
declare
xml_out xmltype;
-- Internal procedure to print a CLOB using dbms_output in chunks
procedure print_clob( p_clob in clob ) is
v_offset number := 1;
v_chunk_size number := 10000;
begin
loop
exit when v_offset > dbms_lob.getlength(p_clob);
dbms_output.put_line( dbms_lob.substr( p_clob, v_chunk_size, v_offset ) );
v_offset := v_offset + v_chunk_size;
end loop;
end print_clob;
begin
-- generate an XML --
select xmlAgg(xmlconcat(xmlelement("dbaObjects"
, xmlelement("objName", object_name)
, xmlelement("objType", object_Type)
)))
into xml_out
from dba_objects;
print_clob(xml_out.getClobVal);
end;
However, if you want to use it in Oracle Apps (EBS and/or Fusion), you can use FND_FILE.PUT_LINE instead of DBMS_OUTPUT.
procedure print_clob( p_clob in clob ) is v_offset number := 1; v_chunk_size number := 10000; begin loop exit when v_offset > dbms_lob.getlength(p_clob); --dbms_output.put_line( dbms_lob.substr( p_clob, v_chunk_size, v_offset ) ); fnd_file.put_line (fnd_file.OUTPUT, dbms_lob.substr( p_clob, v_chunk_size, v_offset ) ); v_offset := v_offset + v_chunk_size; end loop; end print_clob;
For more full-detailed Tutorials and Tips, check out #TheOracleProdigy at https://lifeofanoracleprodigy.blogspot.com/Follow The Oracle Prodigy on Facebook (https://www.facebook.com/theOracleProdigy/) and Twitter (https://twitter.com/D_OracleProdigy)Subscribe to The Oracle Nerd on Youtube! https://www.youtube.com/c/OracleNerd
Awesome and interesting blog. Thanks. Just continue composing this kind of post.
ReplyDeleteElectronic document management system
Awesome and interesting blog. Thanks. Just continue composing this kind of post.
ReplyDeletechar dham yatra by helicopter
Awesome and interesting blog. Thanks. Just continue composing this kind of post.
ReplyDeleteNetwork Services and Management