Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle-XMLTYPE :किसी मान को कैसे अपडेट करें

जबकि @Анатолий редеин का उत्तर निश्चित रूप से 10g और 11g के लिए सही है, किसी को पता होना चाहिए कि updatexml Oracle 12c में पदावनत कर दिया गया है।

12cR1 के बाद से XML में हेरफेर करने का अनुशंसित तरीका XQuery अपडेट सुविधा है। यह Oracle के लिए विशिष्ट नहीं है, लेकिन W3C अनुशंसा ने कई अन्य XML टूल भी लागू किए हैं।

नीचे आपको एक पूरा उदाहरण मिलेगा। हालाँकि, मैं XQuery के विवरण में नहीं जाता, बल्कि आपको निम्नलिखित दस्तावेज़ीकरण की ओर संकेत करता हूँ:

  • अधीर लोगों के लिए XQuery अपडेट
  • XML नोड्स को Oracle XML DB Developer's Guide से बदलना

उदाहरण सेटअप

create table so61_t(
 id number
,xml xmltype
);

insert into so61_t values(1, '<?xml version="1.0" encoding="WINDOWS-1252"?>
<View>
    <ReportValues>
        <SalaryValue variable="HR" value="999"/>
        <SalaryValue variable="floor" value="20"/>
    </ReportValues>
</View>');

insert into so61_t values(2, '<?xml version="1.0" encoding="WINDOWS-1252"?>
<View>
    <ReportValues>
        <SalaryValue variable="HR" value="998"/>
        <SalaryValue variable="floor" value="19"/>
    </ReportValues>
</View>');

XML संशोधित करें

update so61_t set xml =
xmlquery(
'copy $t := $x modify(
  (for $i in $t/View/ReportValues/SalaryValue[@variable="HR"]/@value
   return replace value of node $i with ''666'')
 ,(for $i in $t/View/ReportValues/SalaryValue[@variable="floor"]/@value
   return replace value of node $i with ''SALES'')
) return $t'
passing xml as "x" returning content
)
where id = 1
;

परिणाम

SQL> col id for 99
SQL> col xml for a78
SQL> select id, xmlserialize(content xml as varchar2(200)) as xml from so61_t;
 ID XML
--- -------------------------------------------------
  1 <?xml version="1.0" encoding="UTF-8"?>
    <View>
      <ReportValues>
        <SalaryValue variable="HR" value="666"/>
        <SalaryValue variable="floor" value="SALES"/>
      </ReportValues>
    </View>
  2 <?xml version="1.0" encoding="UTF-8"?>
    <View>
      <ReportValues>
        <SalaryValue variable="HR" value="998"/>
        <SalaryValue variable="floor" value="19"/>
      </ReportValues>
    </View>

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज 64 बिट के लिए Oracle 11g एक्सप्रेस संस्करण?

  2. Oracle को PostgreSQL से कनेक्ट करना

  3. जावा मल्टीकास्ट टाइम टू लिव हमेशा 0 . होता है

  4. वैरिएबल कैसे घोषित करें और उसी Oracle SQL स्क्रिप्ट में इसका उपयोग कैसे करें?

  5. मैं अपने ऑरैकल प्रश्नों को कैसे प्रारूपित करूं ताकि कॉलम लपेटे नहीं?