Existem várias falhas:
-
FROM OPENXML está desatualizado e não deve mais ser usado (existem raras exceções)
-
seu XML incluiu um namespace padrão, que deve ser declarado
-
seu XPath está errado:/Return/ReturnData/IRS990ScheduleHIRS990ScheduleH/
deve ser/Return/ReturnData/IRS990ScheduleH/
Mas de qualquer maneira você deve recorrer ao moderno
XQuery
métodos. Experimente assim:--Isso lerá o XML em uma variável declarada.
--atenção Seu XML é declarado com
utf-8
, isso pode levar a problemas com caracteres especiais... DECLARE @x xml
SELECT @x = R
FROM OPENROWSET (BULK 'C:\Users\USER\990\Example.xml', SINGLE_BLOB) AS ReturnData(R);
--Esta é a consulta, primeiro declare o(s) namespace(s), depois use
.nodes()
e .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)