T- SQL sp_xml_preparedocument создает пустую таблицу - PullRequest
0 голосов
/ 03 августа 2020

Я использую SQL Server 2012 и использую системные хранимые процедуры sp_xml_preparedocument и sp_xml_removedocument для анализа XML в моей исходной таблице [XML_Source]

Это мой код.

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX) 

SELECT @XML = XMLData FROM dbo.[XML_Source]

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT *
INTO dbo.[XML_Destination]
FROM OPENXML(@hDoc, 'OutcomesData/Outcome/Household_Info/Household_Member_Info')
WITH (
Household_ID [varchar](100) '../@ID',
Team [varchar](100) '../Team',
Address1 [varchar](100) '../Address1',
Address2 [varchar](100) '../Address2',
Address3 [varchar](100) '../Address3',
Postcode [varchar](10) '../Postcode'
)

EXEC sp_xml_removedocument @hDoc
GO

Однако, когда я выполняю вышеуказанное, в [XML_Destination] ничего не вводится. У меня 100% данные хранятся как XML в [XML_Source]. Что мне не хватает или где я могу найти?

1 Ответ

0 голосов
/ 11 августа 2020

, если вы можете предоставить вам тест XML, тогда я дам лучший ответ.

В противном случае попробуйте следующее:

DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX) 
-- it test XML
SELECT @XML = '<OutcomesData>
                    <Outcome>
                        <Household_Info>
                            <Household_Member_Info>
                                <Household_ID>1</Household_ID>
                                <Team>1</Team>
                                <Address1>Surat</Address1>
                                <Address2>Gujarat</Address2>
                                <Address3>India</Address3>
                            </Household_Member_Info>
                        </Household_Info>
                    </Outcome>
                </OutcomesData>'

EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML

SELECT * 
FROM OPENXML(@hDoc, 'OutcomesData/Outcome/Household_Info/Household_Member_Info',2)
WITH (
    Household_ID varchar(100),
    Team         varchar(100),
    Address1     varchar(100),
    Address2     varchar(100),
    Address3     varchar(100),
    Postcode     varchar(10)
)

EXEC sp_xml_removedocument @hDoc
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...