SQL Server2008R2データベースに次のストアドプロシージャがあります
ALTER PROCEDURE [dbo].[usp_send_email]
@pStatus Int Out,
@pEMailId Int Out,
@pSenderUserName varchar(MAX),
@pReceivers VarChar(50), **-- this column can have csv values**
@pSub NVarChar(100),
@pCon NVarchar(MAX),
@pHasAttachments Bit
AS
BEGIN
--SET NOCOUNT ON;
Insert Into MessagingMessage
(
CreatedBy,
[Subject],
Body,
HasAttachments
)
Values
(
@pSenderUserName,
@pSub,
@pCon,
@pHasAttachments
)
SET @pEMailId = SCOPE_IDENTITY()
Insert Into MessagingMessageReceipient
(
MessageId,
ReceipientId,
ReceipientType
)
Values
(
@pEMailId,
@pReceivers,
1
)
SET @pStatus = SCOPE_IDENTITY()
END
上記のコードでは、最初のステートメントを1回だけ実行しますが、コンマで区切られたユーザー名ごとに2番目の挿入ステートメントをループで実行します。パラメーターとして指定されたCSV値はC#コードによって既に検証されているため、検証する必要はありません。