Der er flere fejl:
-
FROM OPENXML er forældet og bør ikke bruges mere (der findes sjældne undtagelser)
-
din XML inkluderede et standardnavneområde, som skal erklæres
-
din XPath er forkert:
/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/
skal være/Return/ReturnData/IRS990ScheduleH/
Men alligevel bør du vende dig til moderne XQuery
metoder. Prøv det sådan her:
--Dette vil læse XML til en erklæret variabel.
--opmærksomhed Din XML er deklareret med utf-8
, kan dette føre til problemer med specialtegn...
DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
--Dette er forespørgslen. Angiv først navneområdet/navnene, og brug derefter .nodes()
og .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)