调用第二个方法不起作用-asp.net和c#
} 我有两个存储过程(将更新两个表),分别是uspdatedt和uspdateprev。 我的问题是,为什么我的第二个(USUPDATEPREV)语句不起作用。顺便说一句,sp正从sql server 08正常工作 SP1: 将ANSI_空值设置为ON 在上设置带引号的\u标识符 去 更改过程[dbo]。[USPDupdateDet]调用第二个方法不起作用-asp.net和c#,c#,asp.net,tsql,C#,Asp.net,Tsql,} 我有两个存储过程(将更新两个表),分别是uspdatedt和uspdateprev。 我的问题是,为什么我的第二个(USUPDATEPREV)语句不起作用。顺便说一句,sp正从sql server 08正常工作 SP1: 将ANSI_空值设置为ON 在上设置带引号的\u标识符 去 更改过程[dbo]。[USPDupdateDet] public static int MassEmpNumUpdate(string empToUpdateFrom, string empToUpdateTo)
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;
}
}
作为
不计数
声明@affectedRows int
设置@affectedRows=0
开始
更新tbl1
设置DET1=@emptoopdateto
其中DET1=@emptoopdatefrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置DET2=@emptoopdateto
其中DET2=@emptoopdatefrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
将L1=@emptoopdateto设置为
其中L2=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
将L2=@emptoopdateto设置为
其中L2=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L3=@emptoopdateto
其中L3=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L4=@emptoopdateto
其中L4=@emptoopDateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L5=@emptoopdateto
其中L5=@emptoopdatefrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L6=@emptoopdateto
其中L6=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L7=@emptoopdateto
其中L7=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
开始
更新tbl1
设置L8=@emptoopdateto
其中L8=@EmpToUpdateFrom
设置@affectedRows=@affectedRows+@@ROWCOUNT
结束
return@affectedRows第一个猜测是,第一个块中的using语句正在关闭连接。你犯了什么错误
编辑:在看了之后,这似乎没有发生,所以最好的猜测是你根本没有击中障碍。你确定这是真的吗?我不知道你说的“不工作”是什么意思,但很可能
retval
不是0
您真的应该调试应用程序,看看第一次调用会得到什么。我没有收到错误只是一条消息:没有更新记录,但存在一些记录。是否可能(retalValue!=0)?您可以发布第一个SP的代码吗?您询问的是为什么有些东西不起作用,但没有解释预期的结果(SP应该做什么…)和实际结果(异常堆栈跟踪、错误数据…)。您可以更具体一点。您确定第一个存储的返回值是这样设置的吗?查看MSDN的文档,您可能希望将retval设置为该ExecuteOnQuery的结果,而不是尝试从参数集合获取该结果。在执行第二个存储过程时,您收到的确切错误消息是什么?
@EmpToUpdateFrom varchar(7)
, @EmpToUpdateTo varchar(7)