Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用第二个方法不起作用-asp.net和c#_C#_Asp.net_Tsql - Fatal编程技术网

调用第二个方法不起作用-asp.net和c#

调用第二个方法不起作用-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)

}

我有两个存储过程(将更新两个表),分别是uspdatedt和uspdateprev。 我的问题是,为什么我的第二个(USUPDATEPREV)语句不起作用。顺便说一句,sp正从sql server 08正常工作

SP1:

将ANSI_空值设置为ON 在上设置带引号的\u标识符 去

更改过程[dbo]。[USPDupdateDet]

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)