我有这个存储过程:
<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个记录,其中四个值相同。有什么方法可以根据我选择的记录数量来插入记录,如果我从网格中选择三条记录那么它应该只插入三条记录吗?感谢。
答案 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