在我的存儲過程中,我正在提取結果sys_refcursor
RESULTSET
。當我使用它RESULTSET_XML := XMLTYPE(RESULTSET);
RESULTSET_XML is of SYS.XMLTYPE
類型轉換爲XMLTYPE我得到它作爲如何重命名Oracle XMLTYPE生成的ROW和ROWSET節點並將其轉換爲varchar
<?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>
這個結果我得到了通過轉換它使用RESULTSET_XML.getStringVal();
現在我想這個數據發送到存儲過程作爲一個VARCHAR2
燒焦。但是,存儲過程需要下面給出的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>
格式數據那麼,有沒有辦法重命名這些標籤並將其作爲varchar2
。我試圖在鏈接 [[1]:How to rename an Oracle XMLTYPE node
給出的解決方案,但由於我有結果集,我無法使用此。
或者是否有一種方法在選擇語句本身我會得到上述格式的結果。我的oracle查詢是
SELECT
P_DO_ID AS DELIVERY_ORDER_ID, COMPARTMENT_ID
FROM
T_M_COMPARTMENT
WHERE
VEHICLE_ID = V_TRAILER;
這工作。我把這些東西放在一個函數中,我將它作爲'CLOB'返回,但是我的'CLOB'類型的'varible'沒有顯示任何輸出,即使它可用。我使用'DBMS_OUTPUT.PUT_LINE'看到輸出。 – 2014-10-01 11:31:00
@GauravDhavale - 不太清楚你的意思;你怎麼調用這個函數?你的意思是一個SQL * Plus變量 - 如果是的話,你如何分配和顯示它;通話結束後你打印了嗎? – 2014-10-01 11:33:31
使用以下查詢我得到所需的結構'SELECT XMLELEMENT( 「DocumentElement」,XMLAGG(XMLELEMENT( 「MainGrid」,XMLFOREST(COMPARTMENT_ID,DELIVERY_ORDER_ID))))ABC FROM T_M_COMPARTMENT,T_DE_DELIVERY_ORDER_DETAILS DO WHERE VEHICLE_ID =:V_TRAILER和DO。 DELIVERY_ORDER_ID = 2;' – 2014-10-01 11:33:32