Proc to xml-ify the refcursor create or replace procedure refcursor_print (p_refcursor in sys_refcursor, p_null_handling in number := 0) as l_xml xmltype; l_context dbms_xmlgen.ctxhandle; l_clob clob; l_null_self_argument_exc exception; pragma exception_init (l_null_self_argument_exc, -30625); procedure print (p_msg in varchar2) as l_text varchar2(32000) := p_msg; begin loop exit when l_text is null; dbms_output.put_line(substr(l_text,1,250)); l_text:=substr(l_text, 251); end loop; end print; begin /* Purpose: print debug information (ref cursor) Remarks: outputs weakly typed cursor as XML */ /* get a handle on the ref cursor */ l_context:=dbms_xmlgen.newcontext (p_refcursor); /* # DROP_NULLS CONSTANT NUMBER:= 0; (Default) Leaves out the tag for NULL elements. # NULL_ATTR CONSTANT NUMBER:= 1; Sets xsi:nil="true". # EMPTY_TAG CONSTANT NUMBER:= 2; Sets, for example, <foo/>. */ /* how to handle null values */ dbms_xmlgen.setnullhandling (l_context, p_null_handling); /* create XML from ref cursor */ l_xml:=dbms_xmlgen.getxmltype (l_context, dbms_xmlgen.none); print('Number of rows in ref cursor: ' || dbms_xmlgen.getnumrowsprocessed (l_context)); begin l_clob:=l_xml.getclobval(); print('Size of XML document (anything over 32K will be truncated): ' || length(l_clob)); print(substr(l_clob,1,32000)); exception when l_null_self_argument_exc then print('Empty dataset.'); end; end ; Call like this Nb returns a refcursor into c1 Output via dbms_output c1 sys_refcursor; begin get_refcursor_with_some_params('X1001',TO_DATE('12/02/2008','DD/MM/YYYY'),c1); refcursor_print(c1); end; |
Friday, 30 January 2009
Oracle : Display refcursor content in SqlPlus or Toad
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment