In my stored procedure, I am fetching result sys_refcursor
RESULTSET
. When I am converting it to XMLTYPE using RESULTSET_XML := XMLTYPE(RESULTSET);
RESULTSET_XML is of SYS.XMLTYPE
type I am getting it as
<?xml version="1.0"?>
<ROWSET>
<ROW>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>162</COMPARTMENT_ID>
</ROW>
<ROW>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>163</COMPARTMENT_ID>
</ROW>
<ROW>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>164</COMPARTMENT_ID>
</ROW>
</ROWSET>
This result I got by converting it to char using RESULTSET_XML.getStringVal();
Now I want to send this data to stored procedure as a VARCHAR2
. But the stored procedure required data in the format given below as a VARCHAR2
<DocumentElement>
<Maingrid>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>162</COMPARTMENT_ID>
</Maingrid>
<Maingrid>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>163</COMPARTMENT_ID>
</Maingrid>
<Maingrid>
<DELIVERY_ORDER_ID>2</DELIVERY_ORDER_ID>
<COMPARTMENT_ID>164</COMPARTMENT_ID>
</Maingrid>
</DocumentElement>
So is there any way to rename these tags and send it as varchar2
. I was trying the solution given in link
[[1]: How to rename an Oracle XMLTYPE node
but since I have resultset I am not able to use this.
Or is there an way in select statement itself i will get the result in above format. My oracle query is
SELECT
P_DO_ID AS DELIVERY_ORDER_ID, COMPARTMENT_ID
FROM
T_M_COMPARTMENT
WHERE
VEHICLE_ID = V_TRAILER;