i have updated my proc from taking typical data types to take a single XML param so that i can call it once instead of multiple times for inserting multiple records.
here is a sample of my proc that works well…
ALTER PROCEDURE [dbo].[ins_Attachment_xml]
@XML XML
AS
BEGIN
DECLARE @messageId INT
SET @messageId = (SELECT n.c.value('@MessageId','int') FROM @XML.nodes('/Attachment') n(c))
SELECT
rr.item.value('@FileboxId','varchar(MAX)') AS FileboxId,
rr.item.value('@FileName','varchar(MAX)') AS FileName
INTO #tmp
FROM @XML.nodes('/Attachment/item') AS rr(item)
INSERT INTO Attachment (MessageId,FileboxId,FileName)
SELECT @messageId, T.FileboxId, T.FileName
FROM #tmp T
END
exec ins_Attachment_xml
@XML =
'<Attachment MessageId="2">
<item FileboxId="FB1" FileName="notes.doc" />
<item FileboxId="FB2" FileName="W2.jpeg" />
<item FileboxId="FB3" FileName="2011 Taxes.pdf" />
</Attachment>'
now i need to change the XML param being passed in to this but dont know how to update the proc to make it work with the new XML structure. this is the new xml:
<MessageRecipient>
<MessageId>52</MessageId>
<Recipient>
<RecipientTypeId>2</RecipientTypeId>
<EmailAddress>dig.s@mail.com</EmailAddress>
<FriendlyName>dig s</FriendlyName>
<UFID>dig123</UFID>
</Recipient>
<Recipient>
<RecipientTypeId>3</RecipientTypeId>
<EmailAddress>ash.k@mail.com</EmailAddress>
<FriendlyName>ash k</FriendlyName><UFID>ashish</UFID>
</Recipient>
<Recipient>
<RecipientTypeId>4</RecipientTypeId>
<EmailAddress>dee.v@mail.com</EmailAddress>
<FriendlyName>dee v</FriendlyName>
<UFID>dee123</UFID>
</Recipient>
</MessageRecipient>
Best Answer
I c an't speak for performance but this is one way of doing things.