【发布时间】:2015-01-07 02:21:12
【问题描述】:
我的项目工作正常,但我的问题是当第二个 SP spInsertCorpPlan 发生错误时,CorporationPlan 中没有插入值,而第一个表 CorporationContact 中插入了值。
如何回滚?
请帮忙。
for (int row = 0; row < dtContact.Rows.Count; row++)
{
SqlCommand cmdContact = new SqlCommand("_spInsertCorpContact", _DentalConOpen());
cmdContact.CommandType = CommandType.StoredProcedure;
cmdContact.Parameters.Add("@CorpCode", SqlDbType.VarChar).Value = Corporation.CorpCode;
cmdContact.Parameters.Add("@ContactType", SqlDbType.VarChar).Value = dtContact.Rows[row][0].ToString();
cmdContact.Parameters.Add("@AreaCode", SqlDbType.VarChar).Value = dtContact.Rows[row][1].ToString();
cmdContact.Parameters.Add("@ContactNo", SqlDbType.VarChar).Value = dtContact.Rows[row][2].ToString();
cmdContact.Parameters.Add("@User", SqlDbType.VarChar).Value = Corporation.User;
cmdContact.ExecuteNonQuery();
cmdContact.Dispose();
cmdContact.Connection.Close();
}
for (int row = 0; row < dtPlan.Rows.Count; row++)
{
SqlCommand cmdPlan = new SqlCommand("_spInsertCorpPlan", _DentalConOpen());
cmdPlan.CommandType = CommandType.StoredProcedure;
cmdPlan.Parameters.Add("@CorpCode", SqlDbType.VarChar).Value = Corporation.CorpCode;
cmdPlan.Parameters.Add("@PlanID", SqlDbType.VarChar).Value = dtPlan.Rows[row][0].ToString();
cmdPlan.Parameters.Add("@EffectiveDate", SqlDbType.DateTime).Value = Convert.ToDateTime(dtPlan.Rows[row][2]);
cmdPlan.Parameters.Add("@ExpiryDate", SqlDbType.DateTime).Value = Convert.ToDateTime(dtPlan.Rows[row][3]);
cmdPlan.Parameters.Add("@User", SqlDbType.VarChar).Value = Corporation.User;
cmdPlan.ExecuteNonQuery();
cmdPlan.Dispose();
cmdPlan.Connection.Close();
}
我的存储过程:
ALTER PROCEDURE [dbo].[_spInsertCorpContact]
@CorpCode varchar(20),
@ContactType varchar(1),
@AreaCode varchar(10),
@ContactNo varchar(20),
@User varchar (50)
AS
BEGIN
Insert into CorporationContact
(CorpCode,
ContactType,
AreaCode,
ContactNo,
CreateBy,
CreateDate,
UpdateBy,
UpdateDate)
values
(@CorpCode,
@ContactType,
@AreaCode,
@ContactNo,
@User,
GETDATE(),
'',
null
)
END
ALTER PROCEDURE [dbo].[_spInsertCorpPlan]
@CorpCode varchar(20),
@PlanID varchar(20),
@EffectiveDate DATETIME,
@ExpiryDate DATETIME,
@User varchar (50)
AS
BEGIN
Insert into CorporationPlan
(CorporationPlanID,
CorpCode,
PlanCode,
EffectiveDate,
ExpiryDate,
CreateBy,
CreateDate,
UpdateBy,
UpdateDate)
values
(@CorpCode+@PlanID,
@CorpCode,
@PlanID,
@EffectiveDate,
@ExpiryDate,
@User,
GETDATE(),
'',
null
)
END
【问题讨论】: