Member 12599631 Ответов: 1

Процедура или функция 'sp_customers_add' ожидает параметр '@customerid', который не был указан.


я вставляю udpate удалить данные с помощью одной процедуры, но я получаю этот тип ошибки моя таблица содержит три столбца.. наименование код страны

это моя процедура

alter procedure sp_customers_Add(@action varchar(10), @customerid int, @name varchar(20), @country varchar(20))
as
begin

if @action='SELECT'
begin
select customerid ,name ,country from customers
end

if @action='INSERT'
begin
insert into customers(name,country)values(@name,@country)
end

if @action='UPDATE'
begin
Update customers set name=@name,country=@country where customerid=@customerid
end

if @action='DELETE'
begin
Delete from customers where customerid=@customerid
end
end


Пожалуйста, помогите мне..

Что я уже пробовал:

Процедура или функция 'sp_customers_Add' ожидает параметр '@customerid', который не был указан.

phil.o

Пожалуйста, покажите блок кода, в котором вы вызываете свою хранимую процедуру. Очевидно, что проблема заключается не в самой хранимой процедуре, а в том, как вы ее вызываете.

Member 12599631

строковое имя = txtname.Текст;

страна строки = txtcountry.Текст;
string constr = ConfigurationManager.ConnectionStrings ["constr"].Параметр connectionString;
using (SqlConnection con = new SqlConnection(constr))
{
используя (команда sqlcommand cmd и = новая команда sqlcommand("sp_customers_Add"))
{
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.AddWithValue ("@Action", " INSERT");
УМК.Параметры.AddWithValue ("@Name", имя);
УМК.Параметры.AddWithValue ("@Country", страна);
УМК.Подключение = кон;
против.Открыть();
УМК.Метод executenonquery();
против.Закрывать();
}
}
этот.Биндгрид();

phil.o

Вы должны указать параметр customerId, даже если он не используется в запросе.
cmd.Parameters.AddWithValue("@Customer", DBNull.Value);

Member 12599631

Большое спасибо

1 Ответов

Рейтинг:
0

OriginalGriff

Сообщение об ошибке в значительной степени самоочевидно:

Procedure or function 'sp_customers_Add' expects parameter '@customerid', which was not supplied.
Ваша процедура определяется как имеющая четыре параметра, один из которых называется @customerid но когда вы вызываете SP из своего внешнего кода, Вы не предоставляете значение для этого параметра.
Так что проверьте свой код и убедитесь, что вы:

1) содержит четыре параметра со значениями.
2) правильно написал имя параметра.
3) предоставлено значение, которое не является null или DBNull.Value

Боюсь, мы не сможем сделать этого для вас!


Member 12599631

строковое имя = txtname.Текст;

страна строки = txtcountry.Текст;
string constr = ConfigurationManager.ConnectionStrings ["constr"].Параметр connectionString;
using (SqlConnection con = new SqlConnection(constr))
{
используя (команда sqlcommand cmd и = новая команда sqlcommand("sp_customers_Add"))
{
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.AddWithValue ("@Action", " INSERT");
УМК.Параметры.AddWithValue ("@Name", имя);
УМК.Параметры.AddWithValue ("@Country", страна);
УМК.Подключение = кон;
против.Открыть();
УМК.Метод executenonquery();
против.Закрывать();
}
}
этот.Биндгрид();

я даю идентификатор (1,1) для customerid в базе данных

OriginalGriff

Посмотрите на свой код и список "дел", которые я предложил:
1) содержит четыре параметра со значениями.
Вы указали четыре параметра?

Member 12599631

спасибо

OriginalGriff

Пожалуйста!