我在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结构转换为它们的字符串表示(作为VARCHAR2和CLOB分别).除非您知道您的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)
| 归档时间: |
|
| 查看次数: |
42376 次 |
| 最近记录: |