【问题标题】:Direct XMLTYPE manipulation with SQL/(XML) in Oracle在 Oracle 中使用 SQL/(XML) 直接操作 XMLTYPE
【发布时间】:2014-07-22 09:09:46
【问题描述】:

我的 PL/SQL 代码中有临时的 *XMLTYPE*​​s。我想用 SQL 操作那些临时 XML,比如 UPDATEUPDATEXML

我是 XML 处理的新手,我在 Oracle 文档中找到的是首先制作一个表,将 XML 文件放入其中,然后我可以像这样使用 SQL 操作它(伪代码):

CREATE TABLE xml_table OF XMLTYPE;  
INSERT INTO xml_table values (l_xml);  
UPDATE xml_table SET = UPDATEXML(…) WHERE …;  

但我不想制作(临时)表来保存我的 XML 文件。我只是想像这样直接处理它们(伪代码):

UPDATE l_xml SET = UPDATEXML(…) WHERE ….;  

所以我的问题是:

  1. 甚至可以使用 SQL 直接操作 XMLTYPE 并且
  2. 如果我的函数是process_function(xml XMLTYPE) RETURN XMLTYPE 形式的XML 处理(属性值)的首选方法是什么? (即我的方法 überhaupt 理智吗?)

【问题讨论】:

    标签: sql xml oracle plsql xmltype


    【解决方案1】:

    您实际上可以在不使用 PL/SQL 中的任何临时表的情况下执行此操作。我以前见过的一种结构是这样的:

    set serveroutput on;
    declare
         myxml xmltype; 
    begin
    
        myxml := xmltype('<root><tag1>somevalue</tag1></root>');
    
        select updatexml(myxml,'/root/tag1/text()','someOtherValue') 
        into myxml
        from dual;
    
        dbms_output.put_line(myxml.getClobVal());
    
    end;
    

    您采用的方法对我来说似乎是正确的,但如果您要传递大量 XML,您可能会考虑使用 NOCOPY 提示。

    【讨论】:

    • 谢谢!这很快而且很有帮助!在将您的答案标记为已接受之前,我会稍等片刻。
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多