如何在ORACLE中将XMLTYPE转换为VARCHAR?

18

我的ORACLE表(TRANSACTION)中有两列(XML_IN和XML_OUT)是XML类型的。我的存储过程无法正常工作,因为我不知道如何将它们转换为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;

当我调用这个过程时,在VisualStudio2008中出现的错误信息是:"Unsupported oracle data type USERDEFINED encountered." 你有什么想法吗?

1个回答

41

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接