简体   繁体   English

调用第二种方法不起作用-asp.net和C#

[英]calling a 2nd method is not working - asp.net and 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;
    }

}

} }

I have 2 stored procedure (that will update 2 tables) the uspUpdateDet and uspUpdatePrev. 我有2个存储过程(将更新2个表)uspUpdateDet和uspUpdatePrev。 My question is why is my second (uspUpdatePrev) statement is not working. 我的问题是为什么我的第二个(uspUpdatePrev)语句不起作用。 btw the sp is working right from sql server 08. 顺便说一句,sp从sql server 08开始正常工作。

SP1: SP1:

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go 设置ANSI_NULLS ON设置QUOTED_IDENTIFIER ON

ALTER PROCEDURE [dbo].[uspUpdateDet] 更改过程[dbo]。[uspUpdateDet]

 @EmpToUpdateFrom varchar(7)
, @EmpToUpdateTo varchar(7)

AS SET NOCOUNT ON; 设为NOCOUNT ON;

DECLARE @affectedRows int SET @affectedRows = 0; 宣告@affectedRows int SET @affectedRows = 0;

BEGIN UPDATE tbl1 SET DET1 = @EmpToUpdateTo WHERE DET1 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ROWCOUNT END 开始更新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 开始更新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 开始更新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 开始更新tbl1 SET L2 = @EmpToUpdateTo在哪里L2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END

BEGIN UPDATE tbl1 SET L3 = @EmpToUpdateTo WHERE L3 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ROWCOUNT END 开始更新tbl1 SET L3 = @EmpToUpdateTo WHERE L3 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END

BEGIN UPDATE tbl1 SET L4 = @EmpToUpdateTo WHERE L4 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ROWCOUNT END 开始更新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 开始更新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 开始更新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 开始更新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 开始更新tbl1 SET L8 = @EmpToUpdateTo WHERE L8 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END

return @affectedRows 返回@affectedRows

I don't know what you mean by "not working", but most likely retval is not 0 . 我不知道您所说的“不工作”是什么意思,但很可能retval不是0

You really ought to debug the application and see what you are getting back from the first call. 您确实应该调试该应用程序,并查看从第一次调用中获得的收益。

First guess is that your using statement in the first block is closing your connection. 首先猜测是您在第一块中的using语句正在关闭您的连接。 What error are you getting? 你遇到了什么错误?

Edit: After looking at this question it seems like this does not happen so the best guess would be that you're not hitting the block at all. 编辑:在看了这个问题之后 ,似乎这没有发生,所以最好的猜测是您根本没有碰到障碍物。 Are you sure that's happening? 你确定这是真的吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM