вызов 2-го метода не работает - asp.net и c # - PullRequest
0 голосов
/ 06 августа 2009
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 08.

SP1:

установить ANSI_NULLS ON установить QUOTED_IDENTIFIER ON идти

ALTER PROCEDURE [dbo]. [UspUpdateDet]

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

AS SET NOCOUNT ON;

ОБЪЯВИТЬ @actedRows int SET @afferedRows = 0;

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET DET1 = @EmpToUpdateTo WHERE DET1 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET DET2 = @EmpToUpdateTo WHERE DET2 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L1 = @EmpToUpdateTo ГДЕ L2 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L2 = @EmpToUpdateTo ГДЕ L2 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L3 = @EmpToUpdateTo ГДЕ L3 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L4 = @EmpToUpdateTo ГДЕ L4 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L5 = @EmpToUpdateTo ГДЕ L5 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L6 = @EmpToUpdateTo ГДЕ L6 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L7 = @EmpToUpdateTo ГДЕ L7 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L8 = @EmpToUpdateTo ГДЕ L8 = @EmpToUpdateFrom SET @afferedRows = @afferedRows + @@ ROWCOUNT END

return @ disabledRows

Ответы [ 2 ]

4 голосов
/ 06 августа 2009

Я не знаю, что вы подразумеваете под "не работает", но, скорее всего, retval не 0.

Вы действительно должны отладить приложение и посмотреть, что вы получаете от первого звонка.

1 голос
/ 06 августа 2009

Первое предположение - то, что ваш оператор использования в первом блоке закрывает ваше соединение. Какую ошибку вы получаете?

Редактировать: После просмотра этого вопроса кажется, что этого не происходит, поэтому лучше всего предположить, что вы вообще не попали в блок. Вы уверены, что это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...