我要一次插入多组数据,比如 10 行。
我的表有三列PlanId
:MomEntryId
和CreatedBy
我可以在一个 SQL 语句中插入所有 10 行吗?
这是我的存储过程。如何在 SP 中传递 10 行值。我需要验证它PlanId
的MomEntryId
价值是否greater than zero
存在。
CREATE PROCEDURE SP_Document_Plan_Or_MomEntry_Insert
@PlanId int = null,
@MomEntryId int = null,
@CreatedBy varchar(20)
AS
BEGIN
if(@PlanId > 0)
begin
Insert into t_Document(PlanId,CreatedBy,CreatedDate)
values
(@PlanId,@CreatedBy,GETDATE())
end
else if (@MomEntryId>0)
begin
Insert into t_Document([MomEntryId],CreatedBy,CreatedDate)
values
(@MomEntryId,@CreatedBy,GETDATE())
end
END
GO
下面是我用于传递参数的 C# 代码。
cblCheckList.Items.Cast<ListItem>().ToList().ForEach(d =>
{
if(d.Selected)
{
momEntry.AddDocumentDetailForMomEntry(Convert.ToInt32(d.Value), Session["userId"].ToString());
}
});
这是用于数据层代码的。我使用Enterprise library
文件来创建 DbHelper 类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
/// <summary>
/// Summary description for MOMGateway
/// </summary>
public class MOMGateway
{
private MOMGateway()
{
//
// TODO: Add constructor logic here
//
}
///
/// This method perform insert operation in Document table
///
public static int AddDocumentEntryforMomEntry(int momEntryId,string createdBy)
{
int i = Convert.ToInt32(DBHelper.GetDatabase().ExecuteScalar("SP_Document_Plan_Or_MomEntry_Insert",
null,momEntryId,createdBy));
return i;
}
}