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

Oracle 12c XML को प्रतिक्रिया से मूल्य मिलता है

आप कर सकते हैं इसे extractvalue के साथ करें :

select extractvalue(
  xmltype(response_string), 
  '/soap:Envelope/soap:Body/getAddressForIpResponse/p-address',
  'xmlns="urn:USR1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"')
from dual;

लेकिन extractvalue क्या बहिष्कृत है; इसलिए आपको XMLQuery का इस्तेमाल करना चाहिए :

select XMLQuery(
  'declare default element namespace "urn:USR1";
   declare namespace soap="http://schemas.xmlsoap.org/soap/envelope/";
   /soap:Envelope/soap:Body/getAddressForIpResponse/p-address/text()'
  passing xmltype(response_string)
  returning content).getStringval()
from dual;

किसी भी तरह से आपको डिफ़ॉल्ट और soap . की आपूर्ति करने की आवश्यकता है नाम स्थान।

db<>fiddle

यदि आप डेटा के एकाधिक बिट निकाल रहे हैं तो आप XMLTable का भी उपयोग कर सकते हैं; यहाँ यह बहुत कुछ नहीं जोड़ता है लेकिन यह कुछ इस तरह होगा:

select ip_address
from XMLTable (
  XMLNamespaces (
    default 'urn:USR1',
    'http://schemas.xmlsoap.org/soap/envelope/' as "soap"
  ),
  '/soap:Envelope/soap:Body/getAddressForIpResponse/p-address'
  passing xmltype(response_string)
  columns ip_address varchar2(15) path '.');

db<>fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओआरए-27154 / ओआरए-27146

  2. अंतराल डेटा-प्रकार से सेकंड की कुल संख्या निकालना

  3. पिवट टेबल ओरेकल - पंक्ति वस्तुओं को कॉलम में कैसे बदलें

  4. DbCommand और पैरामीटरयुक्त SQL, ORACLE बनाम SQL सर्वर

  5. हर महीने की अधिकतम तारीख पर एक रिकॉर्ड प्राप्त करें