【发布时间】:2014-05-14 06:16:06
【问题描述】:
我有 xml,它作为输入传递给批量插入的存储过程。我的xml如下,
NewDataSet>
- <Table1>
<StationId>1</StationId>
<DateOfEvent>2013-11-15</DateOfEvent>
<Year>2013</Year>
<WeekOfYear>46</WeekOfYear>
<MonthOfYear>11</MonthOfYear>
<ItemType>CATEGORY</ItemType>
<ItemName>10234</ItemName>
<Clicks>1</Clicks>
<SiteName>sandvikas</SiteName>
</Table1>
我写了一个如下的存储过程,
ALTER PROCEDURE [dbo].[InsertQuestion]
(
@XmlQuestionMeasurements xml
)
AS
BEGIN
DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @XmlQuestionMeasurements
--insert data in to EP_QuestionMeasurement table
Insert into Analytics(StationId,DateOfEvent,Year,WeekOfYear,MonthOfYear,ItemType,ItemName,Clicks,SiteName)
SELECT StationId,DateOfEvent,Year,WeekOfYear,MonthOfYear,ItemType,ItemName,Clicks,SiteName
FROM Openxml( @docHandle, '/NewDataSet/Table1', 2)
WITH ( StationId int,DateOfEvent date, Year int ,WeekOfYear int,MonthOfYear int, ItemType VARCHAR(50),ItemName VARCHAR(50),Clicks int,SiteName VARCHAR(50) )
END
它的插入很好。现在我的问题是我如何修改存储过程以防止再次传递同一组 xml 时插入,检查是否存在相同的数据然后防止插入。 需要检查条件,如果这个 itemname 存在于这个日期,那么没有插入。
问候
【问题讨论】:
标签: xml stored-procedures sql-server-2008-r2