当前位置: 首页 > 面试题库 >

在指定位置将xmltype插入xmltype [PL / SQL]

逄嘉木
2023-03-14
问题内容

我在pl / sql中的指定位置将xmltype插入另一个xmltype时遇到问题。

第一个变量v_xml的格式为:

<ord>
  <head>
    <ord_code>123</ord_code>
    <ord_date>01-01-2015</ord_date>
  </head>
</ord>

第二个v_xml2:

<pos>
  <pos_code>456</pos_code>
  <pos_desc>description</pos_desc>
</pos>

我的目的是得到这样的东西:

<ord>
  <head>
    <ord_code>123</ord_code>
    <ord_date>01-01-2015</ord_date>
  </head>
  <!-- put the second variable in this place - after closing <head> tag -->
  <pos>
    <pos_code>456</pos_code>
    <pos_desc>description</pos_desc>
  </pos>
</ord>

我应该如何处理我的代码?

declare
  v_xml  xmltype;
  v_xml2 xmltype;
begin
  -- some code
  -- some code
  -- v_xml and v_xml2 has the form as I define above
end;

有人能帮助我解决这个问题吗?据我所知,有诸如insertchildxml,appendchildxml之类的功能或类似的功能……我在纯SQL中找不到很少的解决方案,但是我不知道如何在PL
/ SQL中移动它。

谢谢!


问题答案:

您可以使用提到的appendChildXML,如下所示:

declare
  v_xml  xmltype := xmltype('<ord>
                               <head>
                                 <ord_code>123</ord_code>
                                 <ord_date>01-01-2015</ord_date>
                               </head>
                             </ord>');
  v_xml2 xmltype:= xmltype('<pos>
                              <pos_code>456</pos_code>
                              <pos_desc>description</pos_desc>
                            </pos>');
  v_output xmltype;
begin
  select appendChildXML(v_xml, 'ord', v_xml2) 
    into v_output from dual;

  -- output result
  dbms_output.put_line( substr( v_output.getclobval(), 1, 1000 ) );
end;

输出:

<ord>
  <head>
    <ord_code>123</ord_code>
    <ord_date>01-01-2015</ord_date>
  </head>
  <pos>
    <pos_code>456</pos_code>
    <pos_desc>description</pos_desc>
  </pos>
</ord>


 类似资料:
  • 采用这种方法: 我不会写: 因为它似乎依赖于访问器方法被命名为。是否可以使用代替?

  • 问题内容: 我们有一个有一些特殊要求的项目,其中之一是从Oracle 10g数据库的XMLType数据库列中获取数据。 我们已经找到了使用JDBC的简单解决方案,但是由于所有数据访问都是通过JPA(使用的实现是EclipseLink)来完成,因此它会使应用程序有些混乱。 我们已经进行了一些研究,找到了一些解决方案,例如使用Converters和其他辅助类型,但是实现似乎有些复杂。 因此,我的问题是

  • 问题内容: 有没有可以做到这一点的PHP函数? 我用来获取子字符串的位置,我想在该位置之后插入一个。 问题答案: $newstr = substr_replace($oldstr, $str_to_insert, $pos, 0);

  • 我得到这个错误'ORA-01704:字符串文字太长',而我试图插入数据从SQL表在Oracle表。在我的Oracle表中,我有一个XMLTYPE列类型的列。当我创建表时,我指定了这样的XML列: 除此列之外,在它之前还有其他23列,当我从insert语句XML列中排除时,insert正在传递。XML列包含表中所有其他23列的XML格式数据。我是否应该在XML列中为长度或其他内容添加一些附加规范?

  • 问题内容: 说我有XML: 如何在As和C之间插入“ nodeB”?在PHP中,最好通过SimpleXML?喜欢: 问题答案: 以下是在其他一些SimpleXMLElement之后插入新的SimpleXMLElement的函数。由于使用SimpleXML不可能直接做到这一点,因此它在幕后使用了一些DOM类/方法来完成工作。 以及如何使用它的示例(特定于您的问题): 如果您想/需要解释它是 如何 工

  • 我真的需要一些帮助来解决我已经努力了几天的地址簿程序。我正在用C语言处理双向链表。我试图在用户输入的位置将节点添加到列表中,从位置0开始。位置将不会被输入超出范围。(在位置0等位置之前,位置1没有插入)但是位置可以重复:将新节点插入在前一个位置占用者之前的位置。(例如:如果位置1有x,并且新节点插入位置1有y,则位置1现在有y,位置2有x) 我需要获取用户输入的位置号,并检索该位置的当前人员,但我