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

एक्सएमएलएनएस के साथ ओपनएक्सएमएल:डीटी

क्या कोई विशेष कारण है कि ऐसा करने के लिए आपको OPENXML का उपयोग करने की आवश्यकता है? आप 2005 में XQUERY से इस तरह आसानी से जानकारी प्राप्त कर सकते हैं:

declare @xmldata xml    
set @xmldata = 
'<data xmlns="http://www.aaa.com/master_browse_response" xmlns:dt="http://www.aaa.com/DataTypes">
  <products>
    <product>
      <product_id>121403</product_id>
      <countries>
        <dt:country>GBR</dt:country>
        <dt:country>USA</dt:country>
      </countries>
    </product>
  </products>
</data>'

;WITH XMLNAMESPACES 
(
    DEFAULT 'http://www.aaa.com/master_browse_response',
    'http://www.aaa.com/DataTypes' as dt
)
SELECT  x.c.value('(../../product_id)[1]', 'varchar(100)') as product_id,
        x.c.value('(.)[1]', 'varchar(100)') as country
FROM @xmldata.nodes('/data/products/product/countries/dt:country') x(c)

आपकी समस्या के समाधान के लिए नई XQUERY क्षमताएं एक बेहतर विकल्प हैं।

संपादित करें:OPENXML के साथ एक ही समाधान होगा:

declare @xmldata xml    
set @xmldata = 
'<data xmlns="http://www.aaa.com/master_browse_response" xmlns:dt="http://www.aaa.com/DataTypes">
  <products>
    <product>
      <product_id>121403</product_id>
      <countries>
        <dt:country>GBR</dt:country>
        <dt:country>USA</dt:country>
      </countries>
    </product>
  </products>
</data>'

DECLARE @hDoc int, @rootxmlns varchar(100)
SET @rootxmlns = '<root xmlns:hm="http://www.aaa.com/master_browse_response" xmlns:dt="http://www.aaa.com/DataTypes"/>'
EXEC sp_xml_preparedocument @hDoc OUTPUT, @xmldata, @rootxmlns

SELECT *
FROM OPENXML(@hDoc, '//hm:product/hm:countries/dt:country',2)
        WITH(Country    varchar(100) '.',
             Product_ID varchar(100) '../../hm:product_id')

EXEC sp_xml_removedocument @hDoc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर क्वेरी के लिए अधिकतम आकार? खंड में? क्या कोई बेहतर तरीका है

  2. आसान उदाहरणों के माध्यम से SQL सर्वर पदानुक्रम आईडी का उपयोग कैसे करें

  3. SSRS रिपोर्ट परिभाषा सर्वर से नई है

  4. मैं डीबी स्कीमा को डीबीओ में कैसे बदलूं?

  5. लिनक्स पर SQL सर्वर कैसे स्थापित करें