Saturday, November 24, 2007

XML fetching from query

Latest@Test>
set serveroutput on size 1000000

create or replace print_xml(p_sql in varchar2) is
v_clob clob ;
l_xml varchar2(30000);
l_line varchar2(2000);
l_amt pls_integer := 30000;
l_idx pls_integer := 1;
begin
select dbms_xmlgen.getxml(p_sql) into v_clob from dual;

for i in 1 .. ceil(dbms_lob.getlength(p_xml)/l_amt) loop
l_xml := dbms_lob.substr(p_xml, l_amt, l_idx);
loop
exit when l_xml is null;
l_line := substr(l_xml, 1, instr(l_xml, chr(10))-1);
dbms_output.put_line('|' || l_line);
l_xml := substr(l_xml, instr(l_xml, chr(10))+1);
end loop;
end loop;
end print_xml;

No comments: