Добавить параметр хранимой процедуры в sqlDataSource, msSQL

Я хочу вставить значение, используя хранимую процедуру в mssql. Это моя хранимая процедура:

ALTER PROCEDURE dbo.insertNewMember 
(@name varchar(30), 
@age int )
AS
BEGIN 
    INSERT INTO member(memId, name, age) VALUES ('', @name, @age);
END 

Мой код С#, чтобы использовать эту процедуру:

addStaffSql.InsertCommand = "insertNewMember";
addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
addStaffSql.InsertParameters.Add("@name", name);
addStaffSql.InsertParameters.Add("@age", age);
addStaffSql.Insert();

Но при запуске программы я получил следующую ошибку:

Procedure or function 'insertNewMember' expects parameter '@name', which was not supplied.

Если у вас есть какие-либо идеи, я буду признателен.


person Shnkc    schedule 25.04.2012    source источник


Ответы (2)


Попробуйте убрать символ "@" в методах Add().

addStaffSql.InsertCommand = "insertNewMember";
addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
addStaffSql.InsertParameters.Add("name", name);
addStaffSql.InsertParameters.Add("age", age);
addStaffSql.Insert();
person Jason    schedule 25.04.2012
comment
Из-за этого решения выдается это сообщение об ошибке: Строковые или двоичные данные будут усечены. Заявление было прекращено. - person Shnkc; 27.04.2012
comment
@Shnkc Ваш SP показывает, что тип данных для имени — varchar (30), что может быть причиной проблемы. Проверьте длину строки, которую вы передаете процедуре. - person Jason; 27.04.2012

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

if(name!=null)
{
   addStaffSql.InsertCommand = "insertNewMember";
   addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
   addStaffSql.InsertParameters.Add("@name", name);
   addStaffSql.InsertParameters.Add("@age", age);
   addStaffSql.Insert();
}
else
{
  //Send message back to user that name is not filled properly !
}
person Shyju    schedule 25.04.2012
comment
Я проверяю все переменные. Если я использую этот запрос: addStaffSql.InsertCommand = INSERT INTO member(name, age) VALUES(' + name + ', ' + age + ');, он будет успешно оценен. Но мне нужно сделать это с помощью хранимой процедуры, с которой я еще не справился. - person Shnkc; 26.04.2012