想在 PL/SQL 中连接两个 XML 元素,想连接两个 XMLTYPE 元素
Posted
技术标签:
【中文标题】想在 PL/SQL 中连接两个 XML 元素,想连接两个 XMLTYPE 元素【英文标题】:Want to concat two XML elements in PL/SQL, want to concat two XMLTYPE elements 【发布时间】:2014-09-30 19:41:24 【问题描述】: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 变量?
谢谢。
【问题讨论】:
我还想知道如何将 varchar2 转换为 XMLTYPE 并将 XMLTYPE 转换为 varchar2 .. 上面的变量会出错,因为 XMLTYPE 变量应该有开始和结束标记并且格式正确。 您不能“连接”XML,因为这样做没有意义。如果A
和B
是两个格式正确的XML 文档,那么“A || B
”本身就不是格式正确的,因为它有两个根元素。为什么您认为需要能够以这种方式连接 XML 文档?
【参考方案1】:
您的示例将无法编译,因为所有字符串都不是有效的 XML 文档。 (你会得到 ORA-31011: XML Parsing Failed)。
您可以将每个片段放在 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()' 将返回 XML 的 varchar2 值。
【讨论】:
以上是关于想在 PL/SQL 中连接两个 XML 元素,想连接两个 XMLTYPE 元素的主要内容,如果未能解决你的问题,请参考以下文章
PL/SQl sqldeveloper想在plsql中输出多行