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-ой метод не работает - asp.net и C#
У меня есть 2 хранимая процедура (которая будет обновлять 2 таблицы) в uspUpdateDet и uspUpdatePrev. Мой вопрос: почему мой второй (uspUpdatePrev) оператор не работает. Кстати СП работает прямо с сервера SQL 08.
SP1:
набор ANSI_NULLS ПО множества QUOTED_IDENTIFIER ON идти
ALTER PROCEDURE [DBO].[UspUpdateDet]
@EmpToUpdateFrom varchar(7)
, @EmpToUpdateTo varchar(7)
КАК SET NOCOUNT ON;
DECLARE @affectedRows int SET @affectedRows = 0;
НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET Det1 = @EmpToUpdateTo ГДЕ Det1 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ UPDATE tbl1 SET DET2 = @EmpToUpdateTo ГДЕ DET2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ UPDATE tbl1SET L1 = @EmpToUpdateTo Где L2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L2 = @EmpToUpdateTo Где L2 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ UPDATE tbl1 SET L3 = @EmpToUpdateTo Где L3 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ RO WCOUNT КОНЕЦ
НАЧАТЬ UPDATE tbl1 SET L4 = @EmpToUpdateTo ГДЕ L4 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L5 = @EmpToUpdateTo ГДЕ L5 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L6 = @EmpToUpdateTo ГДЕ L6 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT КОНЕЦ
НАЧАТЬ ОБНОВЛЕНИЕ tbl1 SET L7 = @EmpToUpdateTo ГДЕ L7 = @EmpToUpdateFrom SET @affectedRows = @affectedRows + @@ ROWCOUNT END
НАЧАТЬ UPDATE tbl1 SET L8 = @EmpToUpdateTo WHERE L8 = @EmpToUpdateFrom SET @ affectedRows = @affectedRows + @@ ROWCOUNT END
возврата @affectedRows
Вы спрашиваете, почему что-то не работает, не объясняя, какие ожидаемые результаты (что должен делать SP, ...) и каковы фактические результаты (трассировка стека исключений, неправильные данные, ...). Вы можете быть немного более конкретными. –
Вы уверены, что возвращаемое значение из первого сохранено таким образом? Если посмотреть на документацию MSDN, вы можете установить retval равным результату этого ExecuteNonQuery, а не пытаться получить его из коллекции Parameters. –
Что такое сообщение об ошибке _exact_, которое вы получаете при вступлении в выполнение 2-го сохраненного процесса? –