存储过程会插入多个重复行

时间:2016-02-12 08:08:59

标签: sql-server visual-studio

我有这个存储过程:

<p>भारत का इतिहास काफी समृद्ध एवं विस्तृत है। </p>

我使用vb.net脚本执行存储过程:

ALTER PROCEDURE [dbo].[spInsertAttendanceDetail] 

@ConstituentIdNo nvarchar(15),
@AttendanceID nvarchar(15)


AS
BEGIN

   INSERT INTO tblAttendanceDetail (AttendanceID,ConstituentIdNo)
   VALUES (@AttendanceID,@ConstituentIdNo)

END

如果我从多个选择网格中选择三个记录,则会插入9个记录,如果我选择四个记录,则会插入16个记录,其中四个值相同。有什么方法可以根据我选择的记录数量来插入记录,如果我从网格中选择三条记录那么它应该只插入三条记录吗?感谢。

1 个答案:

答案 0 :(得分:0)

您可以在程序中使用它:

   MERGE tblAttendanceDetail as target
   USING (SELECT AttendanceID,ConstituentIdNo 
            FROM (VALUES (@AttendanceID,@ConstituentIdNo))
            as t(AttendanceID,ConstituentIdNo)) as source
    ON targer.AttendanceID = source.AttendanceID 
        AND target.ConstituentIdNo = source.ConstituentIdNo
    WHEN NOT MATCHED THEN
        INSERT VALUES (source.AttendanceID,source.ConstituentIdNo)

它可以帮助您复制数据。

但正如@FLICKER在评论中所说,你应该:

  

创建SqlProcedure然后填充参数并在里面执行   循环

也许这会有所帮助(vb.net):

For Each row As DataGridViewRow In Arguments.SelectedRows
    Using sql As New SqlProcedure("spInsertAttendanceDetail")
    sql.AddParameter("@ConstituentIdNo", row.Cells(0).Value)
    sql.AddParameter("@AttendanceID", row.Cells(1).Value)
    sql.ExecuteNonQuery()
    End Using
Next