कई खामियां हैं:
-
OPENXML से पुराना है और अब इसका उपयोग नहीं किया जाना चाहिए (दुर्लभ अपवाद मौजूद हैं)
-
आपके एक्सएमएल में एक डिफ़ॉल्ट नेमस्पेस शामिल है, जिसे घोषित किया जाना चाहिए
-
आपका XPath गलत है:
/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/
/Return/ReturnData/IRS990ScheduleH/
. होना चाहिए
लेकिन फिर भी आपको आधुनिक XQuery
की ओर रुख करना चाहिए तरीके। इसे इस तरह आजमाएं:
--यह XML को एक घोषित चर में पढ़ेगा।
--ध्यान दें आपका एक्सएमएल utf-8
. के साथ घोषित किया गया है , इससे विशेष पात्रों के साथ समस्याएँ हो सकती हैं...
DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
--यह क्वेरी है, पहले .nodes()
. का उपयोग करने के बजाय नेमस्पेस घोषित करें और .value()
:
WITH XMLNAMESPACES(DEFAULT 'http://www.irs.gov/efile'
,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
SELECT ct.value('(FinancialAssistancePolicyInd)[1]','int') AS FinancialAssistancePolicyInd
,ct.value('(FPGReferenceDiscountedCareInd)[1]','int') AS FPGReferenceDiscountedCareInd
,ct.value('(FinancialAssistanceAtCostTyp/PersonsServedCnt)[1]','int') AS PersonsServedCnt
,ct.value('(FinancialAssistanceAtCostTyp/NetCommunityBenefitExpnsAmt)[1]','int') AS NetCommunityBenefitExpnsAmt
FROM @x.nodes('/Return/ReturnData/IRS990ScheduleH') AS A(ct)