SQL Server의 저장 프로 시저에 XML 문자열을 전달하여 내 테이블에 10000 개의 레코드를 삽입합니다. 이 때 나는이 저장 프로 시저를 호출합니다. 삽입하고 싶지 않은 레코드가있는 경우 SQL Server 테이블에서 필자가 지나가는 xml 문자열을 확인하고 레코드가 삽입되어 있어야하는 새 레코드인지 확인하십시오. 일부 솔루션을 제공하십시오. 감사.SQL Server 저장 프로 시저에 xml 문자열 매개 변수 전달
ALTER procedure [dbo].[SP_CMSUSER1]
(@xmlString ntext)
as
begin
DECLARE @idoc INT
DECLARE @data nvarchar(100)
EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlString
INSERT INTO dbo.Seg_RecipientsTemp (ContactID,first_name,last_name,company,email,last_updated)
SELECT ContactID,
first_name,
last_name,
company,
email,
last_updated FROM OPENXML(@idoc,
'/NewDataSet/ContactData', 6)
WITH
(ContactID int ,
first_name nvarchar(50),
last_name nvarchar(50),
company nvarchar(max),
email nvarchar(100),
last_updated datetime
)
end
내 XML은 다음과 같습니다
<NewDataSet>
<Table>
<ContactID>2</ContactID>
<last_name>klklk</last_name>
</Table>
<Table>
<ContactID>4</ContactID>
<first_name>k</first_name>
<last_name>kk</last_name>
<company>k</company>
</Table>
<Table>
<ContactID>6</ContactID>
<first_name>naveen</first_name>
<last_name />
<company>inno</company>
</Table>
<Table>
<ContactID>7</ContactID>
<first_name>sridar</first_name>
<last_name />
<company>mahindara</company>
</Table>
<Table>
<ContactID>1</ContactID>
<first_name>terst</first_name>
</Table>
<Table>
<ContactID>2</ContactID>
<first_name />
<last_name>ask</last_name>
<company />
</Table>
</NewDataSet>
** ** 샘플 XML을보고 당신이 그것에서 추출 할 무엇에 대한 설명을 얻을 도움이 될 것입니다! –
contactid가 xml 문자열이있는 SQL 테이블에 존재하는지 확인하고 싶습니다. 이미 삽입되어 있으면 삽입 할 필요가 없습니다. 새 레코드 만 삽입하면됩니다. 필요하지 않은 경우 (select * from dbo.Seg_RecipientsTemp where Contact_Id = (이 경우 –
'dbo.Seg_RecipientsTemp'에는 존재하지 않지만 XML 데이터에 존재하는'ContactID'에 대한 레코드를 INSERT 하시겠습니까?'dbo.Seg_RecipientsTemp의 데이터를 업데이트 하시겠습니까 ''ContactID'에 대한 XML 데이터가 있습니까? –