Процедура или функция "имя процедуры" ожидает параметр "@comments", который не был указан.
Я использую asp.net для чего у меня есть база данных, в которую один из моих полевых комментариев имеет тип данных varchar(max) в SQL Server 2012, и значение также может быть вставлено null. В базе данных нет никаких проблем с вставкой в таблицу базы данных при переходе к asp.net используя хранимую процедуру, я не даю никакой информации в текстовом поле, что означает пустую строку. Я получаю ошибку "Процедура или функция "имя процедуры" ожидает параметр "@Comments", который не был указан."
Что я уже пробовал:
Столбец базы данных:
[Comments] VARCHAR (MAX) NULL
Код .Net:
string commentsText = (!string.IsNullOrEmpty(txtComments.Text)) ? txtComments.Text : null
Команда Addwithvalue:
cmd.Parameters.AddWithValue("@Comments", commentsText);
Получение ошибки в этой строке:
cmd.ExecuteNonQuery();
Animesh Datta
Поместите свой полный код C#
Member 8583441
строка spAddOrUpdateUser = "имя процедуры пользователя";
using (cmd = new SqlCommand(spAddOrUpdateUser, con))
{
УМК.CommandType = CommandType.Хранимая процедура;
/* добавление параметров в SqlCommand ниже */
cmd.параметры.AddWithValue("@StatementType", "Insert");
cmd.параметры.AddWithValue("@EmpID", empID);
cmd.параметры.AddWithValue("@NumberOfDays", txtNoOfDays.Text);
cmd.параметры.AddWithValue("@LeaveFromDate", txtStartDate.Text);
cmd.параметры.AddWithValue("@LeaveToDate", txtEndDate.Text);
cmd.параметры.AddWithValue("@CreatedOn", DateTime.Now);
cmd.параметры.AddWithValue("@TypeOfLeave", leaveTypes);
cmd.параметры.AddWithValue("@StatusOfLeave", "В Ожидании...");
cmd.параметры.AddWithValue("@ReasonForLeave", txtReasonofLeave.Text);
// txtComments.Text == "" ? null : txtComments.Текст;
cmd.параметры.AddWithValue ("@Comments", commentsText);
// выходной параметр
cmd.Parameters.Add("@ResponseMessage", SqlDbType.NVarChar, 250);
cmd.Parameters["@ResponseMessage"].Направление = ParameterDirection.Выход;
против.Открыть();
УМК.Метод executenonquery();
против.Закрывать();
lblUserLeavesMessage.Text = cmd.Parameters["@ResponseMessage"].Value.Метод toString();
}
Member 8583441
Проблема Решена.....