【发布时间】:2011-09-13 08:21:15
【问题描述】:
我有一个表,其中包含像
这样的列SiteID (identity_Col)SiteNamePOrderIDLocationAddressCluster-
VenderName
我想使用 xml 字符串在此表中插入/更新/删除数据。除了这一列,XML 字符串还包含一列,即。行信息。此列将具有“未更改”、“更新”、“新建”、“删除”等值。基于此值,应插入、更新、删除表中的行。
我的 XML 字符串如下:
<NewDataSet>
<DataTable>
<SiteID>2</SiteID>
<SiteName>NIZAMPURA</SiteName>
<POrderID>7</POrderID>
<Location>NIZAMPURA</Location>
<SiteAddress>Vadodara</SiteAddress>
<Cluster>002</Cluster>
<SubVendorName>Test Vender-1</SubVendorName>
<RowInfo>UNCHANGED</RowInfo>
</DataTable>
<DataTable>
<SiteID>16</SiteID>
<SiteName>Site-1</SiteName>
<POrderID>7</POrderID>
<Location>Alkapuri</Location>
<SiteAddress>test</SiteAddress>
<Cluster>Test Cluster</Cluster>
<SubVendorName>Test Vender12</SubVendorName>
<RowInfo>UNCHANGED</RowInfo>
</DataTable>
<DataTable>
<SiteID>17</SiteID>
<SiteName>Site-3</SiteName>
<POrderID>7</POrderID>
<Location>Alkapuri123</Location>
<SiteAddress>test123</SiteAddress>
<Cluster>Test Cluster123</Cluster>
<SubVendorName>Test Vender123</SubVendorName>
<RowInfo>DELETE</RowInfo>
</DataTable>
</NewDataSet>'
这是我编写的用于在 RowInfo = "NEW" 时在表中插入数据的代码
IF len(ISNULL(@xmlString, '')) > 0
BEGIN
DECLARE @docHandle1 int = 0;
EXEC sp_xml_preparedocument @docHandle1 OUTPUT, @xmlString
INSERT INTO [SiteTRS] (
[SiteName],
[POrderID],
[Location],
[SiteAddress],
[Cluster],
[SubVendorName])
SELECT SiteName,POrderID,Location,SiteAddress,Cluster,SubVendorName
FROM OPENXML (@docHandle1, '/NewDataSet/DataTable')
WITH (SiteName varchar(50) './SiteName',
POrderID varchar(50) './PorderID',
Location varchar(50) './Location',
SiteAddress varchar(max) './SiteAddress',
Cluster varchar(50) './Cluster',
SubVendorName varchar(50) './SubVendorName',
RowInfo varchar(30) './RowInfo')
WHERE RowInfo='NEW'
但我不知道如何使用 XML 来更新/删除表中的记录。请指导 我是 XML 的新手,所以不知道。如果我做一些幼稚的事情,请原谅我。
【问题讨论】:
标签: sql-server xml sql-server-2008