2016-01-27 23 views
3

我在ORACLE中的表(TRANSACTION)中有兩列是XMLTYPE(XML_IN和XML_OUT)。我的程序不工作,因爲我不知道如何將它們轉換爲VARCHAR或其他東西(我只是認爲這是錯誤)。我的程序是:如何在ORACLE中的VARCHAR中轉換XMLTYPE?

PROCEDURE SEARCH_XML 
(
    P_ID_TRANSACTION IN TRANSACTION.ID_TRANSACTION%TYPE, 

    P_CURSOR OUT T_CURSOR 
) 
IS 
BEGIN 

    OPEN P_CURSOR FOR 

    SELECT T.XML_IN, T.XML_OUT 
    FROM TRANSACTION T 
    WHERE T.ID_TRANSACTION = P_ID_TRANSACTION; 

END SEARCH_XML; 

當我打電話在VisualStudio2008此過程中的錯誤信息是:「不支持的Oracle數據類型用戶自定義的遭遇」任何想法如何工作?

+1

,看一下'getstringval()'函數 – Kobi

回答

12

XMLType有兩種方法:getStringVal()getClobVal()將XML結構轉換爲它們的字符串表示(作爲VARCHAR2CLOB分別)。除非你知道你的XML輸出是要始終小於4000個字符(字節),那麼你可能會想使用getClobVal()這樣的:

PROCEDURE SEARCH_XML 
(
    P_ID_TRANSACTION IN TRANSACTION.ID_TRANSACTION%TYPE, 

    P_CURSOR OUT T_CURSOR 
) 
IS 
BEGIN 
    OPEN P_CURSOR FOR 
    SELECT T.XML_IN.getClobVal() AS XML_IN, 
      T.XML_OUT.getClobVal() AS XML_OUT 
    FROM TRANSACTION T 
    WHERE T.ID_TRANSACTION = P_ID_TRANSACTION; 
END SEARCH_XML; 
+0

您是第老闆:) – Nemanja

+0

我們正在使用getClobVal(),如下所示的memroy異常。 ORA-04030:嘗試分配78312字節(kolarsCreateCt,qmemNextBuf:大分配)ORA-06512:處於「SYS.XMLTYPE」時進程內存不足。請在此幫助我們,在此先感謝.. :) –

+1

@PavanKumarVarma在沒有任何上下文的情況下發布隨機錯誤不是獲取幫助的方式 - 用複製問題的[MCVE]發佈新問題。 – MT0

相關問題