如何在ORACLE中的VARCHAR中转换XMLTYPE?

Nem*_*nja 12 oracle

我在ORACLE中的表(TRANSACTION)中有两列是XMLTYPE(XML_IN和XML_OUT).我的程序不起作用,因为我不知道如何将它们转换为VARCHAR或其他东西(我只是认为这是错误).我的程序是:

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;
Run Code Online (Sandbox Code Playgroud)

当我在VisualStudio2008中调用此过程时出现错误消息:"遇到不支持的oracle数据类型USERDEFINED".不知道这是怎么回事?

MT0*_*MT0 26

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;
Run Code Online (Sandbox Code Playgroud)