[英]T-SQL converting XML string to table data
我是將XML字符串轉換為SQL Server表的新手。 當我執行以下代碼時,它將在Management Studio的結果窗口中生成表格數據。 如果我嘗試取消注釋插入行,則會出現查詢錯誤。 我創建的表如下所示:
T-SQL是這樣(我不確定自己在做什么錯):
DECLARE @XML XML
SET @XML = '
<Codes>
<Code>
<TranCode>09764812</TranCode>
<TranDescr>WP FBCCP ADJUSTMENT</TranDescr>
<PosTranCode>77724</PosTranCode>
<NegTranCode>88820</NegTranCode>
</Code>
<Code>
<TranCode>09764804</TranCode>
<TranDescr>WP FBCCP CRM</TranDescr>
<PosTranCode>77724</PosTranCode>
<NegTranCode>88820</NegTranCode>
</Code>
<Code>
<TranCode>09764804</TranCode>
<TranDescr>WP FBCCP CRM</TranDescr>
<PosTranCode>77724</PosTranCode>
<NegTranCode>88820</NegTranCode>
</Code>
</Codes>'
DECLARE @handle INT
DECLARE @PrepareXmlStatus INT
EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML
--INSERT INTO 670_TransCodes (TranCode,TranDescr,PosTranCode,NegTranCode)
SELECT TranCode,TranDescr,PosTranCode,NegTranCode
FROM OPENXML(@handle, '/Codes/Code', 2)
WITH (
TranCode varchar(20) 'TranCode',
TranDescr varchar(50) 'TranDescr',
PosTranCode INT 'PosTranCode',
NegTranCode INT 'NegTranCode'
)
EXEC sp_xml_removedocument @handle
您需要在表格名稱前加上[]
INSERT INTO [670_TransCodes] (TranCode,TranDescr,PosTranCode,NegTranCode)
我會改用xml node
方法
INSERT INTO [670_TransCodes] (TranCode,TranDescr,PosTranCode,NegTranCode)
select a.value('TranCode[1]', 'varchar(20)') as TranCode,
a.value('TranDescr[1]', 'varchar(50)') as TranDescr,
a.value('PosTranCode[1]', 'INT') as TranDescr,
a.value('NegTranCode[1]', 'INT') as NegTranCode
from @XML.nodes('/Codes/Code') as t(a);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.