| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Function to return a Ref Cursor from XML (NOT XML from a Ref Cursor)
Is it possible to generate a (weak) cursor from an XML document?
There's plenty written about getting XML back from functions, but I
already have XML (from various Web Services) and I want to cast it as
a Ref Cursor to return to (say) Oracle Forms. The calling program/
client will always know what the cursor columns will be, as they will
know what the called web service returns. Something like this:
CREATE OR REPLACE FUNCTION x RETURN SYS_REFCURSOR
IS
v_xml VARCHAR2(4000) :=
'<?xml version = ''1.0''?>' ||
'<ROWSET>' ||
' <ROW num="1">' ||
' <EMPNO>7369</EMPNO>' ||
' <ENAME>SMITH</ENAME>' ||
' <JOB>CLERK</JOB>' ||
' <MGR>7902</MGR>' ||
' <HIREDATE>12/17/1980 0:0:0</HIREDATE>' ||
' <SAL>800</SAL>' ||
' <DEPTNO>20</DEPTNO>' ||
' </ROW>' ||
' <ROW num="2">' ||
' <EMPNO>7499</EMPNO>' ||
' <ENAME>ALLEN</ENAME>' ||
' <JOB>SALESMAN</JOB>' ||
' <MGR>7698</MGR>' ||
' <HIREDATE>2/20/1981 0:0:0</HIREDATE>' ||
' <SAL>1600</SAL>' ||
' <COMM>300</COMM>' ||
' <DEPTNO>30</DEPTNO>' ||
' </ROW>' ||
'</ROWSET>';
cur SYS_REFCURSOR;
BEGIN
OPEN cur
FOR
SELECT * FROM some_kind_of_cast_of_v_xml;
RETURN cur;
END;
I know how this kind of approach works with a PL/SQL table type and
use of CAST, but from an XML document? The XML doc can be XMLTYPE,
CLOB, or VARCHAR2, I really don't care, it's just that I want a cursor
showing the various fields as column, and not XML. Even the scalar
types don't matter - they can all be string; let the client program
worry about that.
Thanks,
Ant Received on Thu Jun 07 2007 - 06:34:59 CDT
![]() |
![]() |