调用第二方法不工作 - asp.net和c#
public static int MassEmpNumUpdate(string empToUpdateFrom, string empToUpdateTo)
{
string sql;
int retval;
using (cn = new SqlConnection(ConnectionString()))
{
cn.Open();
sql = "uspUpdateDet"; // THIS IS THE 1ST SP
using (cmd = new SqlCommand(sql, cn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@EmpToUpdateFrom", empToUpdateFrom);
cmd.Parameters.AddWithValue("@EmpToUpdateTo", empToUpdateTo);
cmd.Parameters.Add("@ReturnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
retval = (int)cmd.Parameters["@ReturnValue"].Value;
}
if (retval == 0)
{
sql = "uspUpdatePrev"; // THIS IS THE 2ND SP - not working :(
using (cmd = new SqlCommand(sql, cn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@EmpToUpdateFrom", empToUpdateFrom);
cmd.Parameters.AddWithValue("@EmpToUpdateTo", empToUpdateTo);
cmd.Parameters.Add("@returnvalue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
return cmd.ExecuteNonQuery();
}
}
return retval;
}
}
我有2存储过程(将更新2个表)的uspUpdateDet和uspUpdatePrev。 我的问题是为什么我的第二个(uspUpdatePrev)语句不起作用。者均基于SP被从SQL Server工作的权利08.
SP1:
集ANSI_NULLS ON 设定QUOTED_IDENTIFIER ON 去
ALTER PROCEDURE [DBO]。[uspUpdateDet]
@EmpToUpdateFrom varchar(7)
, @EmpToUpdateTo varchar(7)
AS SET NOCOUNT ON;
DECLARE @affectedRows int SET @affectedRows = 0;
BEGIN UPDATE TBL1 SET DET1 = @EmpToUpdateTo WHERE DET1 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET DET2 = @EmpToUpdateTo WHERE DET2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L1 = @EmpToUpdateTo WHERE L2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L2 = @EmpToUpdateTo WHERE L2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L3 = @EmpToUpdateTo WHERE L3 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ RO WCOUNT END
BEGIN UPDATE TBL1 SET L4 = @EmpToUpdateTo WHERE L4 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L5 = @EmpToUpdateTo WHERE L5 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L6 = @EmpToUpdateTo WHERE L6 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L7 = @EmpToUpdateTo WHERE L7 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
BEGIN UPDATE TBL1 SET L8 = @EmpToUpdateTo WHERE L8 = @EmpToUpdateFrom SET @ affectedRows = @affectedRows + @@ ROWCOUNT END
回报@affectedRows
我不知道你的意思是“不工作”,但最有可能的是retval
不是0
。
你真的应该调试应用程序,看看你从第一次通话回来。
你在问为什么没有解释什么是预期的结果(SP应该做什么......),以及实际结果是什么(异常堆栈跟踪,错误的数据...),为什么不起作用。你可以更具体一点。 – 2009-08-06 15:58:59
你确定从第一个存储的返回值是这样设置的吗?查看MSDN的文档,您可能希望将retval设置为等于ExecuteNonQuery的结果,而不是尝试从Parameters集合中获取它。 – 2009-08-06 16:09:53
步入执行第二个存储过程时收到的_exact_错误消息是什么? – 2009-08-06 16:22:43