Вы можете отправить UDT в свой SP, но некоторые люди часто выбирают список через запятую, особенно при фильтрации данных.В последнем случае вы можете разделить список на @RecipientID, чтобы присоединиться к запросам.
Опция 1
CREATE PROCEDURE MessageInsert(…@RecipientIDTable RecipientIDTable)--Or more generically IntegerIDTable :)
Опция 2
CREATE PROCEDURE MessageInsert(…@RecipientIDList NVARCHAR(MAX))
AS
DECLARE @RecipientIDTable TABLE(RecipientID INT)
INSERT @RecipientIDTable SELECT ID FROM dbo.MySpliterFunction(@RecipientIDList)
Пример использования
@MessageID = @@IDENTITY
INSERT INTO Messages2Members (MessageID, FromID, RecipientID)
SELECT @MessageID, @FromID, R.RecipientID FROM @RecipientIDTable R
Вариант 1 становится более производительным по мере увеличения размера списка, однако я сомневаюсь, что вы когда-нибудь будете этим обеспокоены, если ваша полезная нагрузка будет CC для сообщения.