2014-09-30 55 views
-1
declare 
var1 XMLTYPE; 
var2 XMLTYPE; 
var3 XMLTYPE; 
var4 XMLTYPE; 
Begin 
var1 := XMLTYPE('<START>') ; 
var2 := XMLTYPE('<DOCUMENT><TITLE>Mr.</TITLE>'); 
var3 := XMLTYPE('<NAME>Mr.</NAME></DOCUMENT>'); 
var4 := XMLTYPE('</START>') ; 
end; 

如何连接上述XMLTYPE变量?想要在PL/SQL中连接两个XML元素,想要连接两个XMLTYPE元素

谢谢。

+0

我也想知道如何将varchar2转换为XMLTYPE和XMLTYPE转换为varchar2 .. 上述变量会给出错误,因为XMLTYPE变量应该有起始和结束标记并且格式正确。 – Smashinsameer 2014-09-30 19:54:03

+2

您无法'串联'XML,因为它没有意义。如果'A'和'B'是两个格式良好的XML文档,那么''A || B''本身就不会很好,因为它有两个根元素。为什么你认为你需要能够以这种方式连接XML文档? – 2014-09-30 22:04:52

回答

1

您的示例不会编译为任何字符串都是有效的XML文档。 (您将得到ORA-31011:XML解析失败)。

你可以把每一个片段一个VARCHAR2,然后串联那些在XMLTYPE功能:

declare 
    var1 varchar2(32); 
    var2 varchar2(32); 
    var3 varchar2(32); 
    var4 varchar2(32); 
    varx xmltype; 
Begin 
    var1 := '<START>'; 
    var2 := '<DOCUMENT><TITLE>Mr.</TITLE>'; 
    var3 := '<NAME>Mr.</NAME></DOCUMENT>'; 
    var4 := '</START>' ; 

    varx := xmltype(var1 || var2 || var3 || var4); 

    dbms_output.put_line(varx.getStringVal());  
end; 

你可以从最后一行看到,该方法“getStringVal()”将返回的VARCHAR2值XML。