vrijdag 19 juli 2013

Oracle 12c: deprecated xml update functions

All Oracle SQL functions for updating XML data are deprecated. Oracle recommends that you use XQuery Update instead. These are the deprecated XML updating functions:
    updateXML
    insertChildXML
    insertChildXMLbefore
    insertChildXMLafter
    insertXMLbefore
    insertXMLafter
    appendChildXML
    deleteXML

Old way:
set serveroutput on;
DECLARE
   myMainXml   XMLTYPE;
   mySubXml    XMLTYPE;
   myCombinedXml XMLTYPE;
   
BEGIN
   SELECT   XMLELEMENT ("MAIN", NULL) INTO myMainXml FROM DUAL;
   SELECT   XMLELEMENT ("SUBXML", 'Some value') INTO mySUBXml FROM DUAL;
   
   SELECT   APPENDCHILDXML(myMainXml, '/MAIN',mySUBXml)INTO myCombinedXml FROM DUAL;
   
   dbms_output.put_line(myCombinedXml.getclobval ()); 
   
END;

new way:
set serveroutput on;

DECLARE
   myMainXml       XMLTYPE;
   mySubXml        XMLTYPE;
   myCombinedXml   XMLTYPE;
BEGIN
   SELECT   XMLELEMENT ("MAIN", NULL) INTO myMainXml FROM DUAL;

   SELECT   XMLELEMENT ("SUBXML", 'Some value') INTO mySUBXml FROM DUAL;

   SELECT   XMLQUERY ('copy $tmp := . modify insert node  $bla  as last into $tmp/MAIN return $tmp'
               PASSING myMainXml,  mySubXml as "bla"  RETURNING CONTENT)
     INTO   myCombinedXml
     FROM   DUAL;


   DBMS_OUTPUT.put_line (myCombinedXml.getclobval ());
END;

Geen opmerkingen:

Een reactie posten