2014-01-07 5 views
1

Это подпись моей хранимой процедуры:Не добавлять параметры хранимой процедуры

Create Procedure sp_Member_Account_Select_By_User_And_Membership_Year 
(
    @Username varchar(150), 
    @Membership_Year varchar(10) 
) 
AS 

Код в asp.net C#

command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername; 
command.Parameters.Add("@Membership_Year", SqlDbType.VarChar,10).Value = "2014"; 

SqlDataReader dr; 
dr = command.ExecuteReader(); 

Сообщение об ошибке:

Процедура или функция 'sp_Member_Account_Select_By_User_And_Membership_Year' ожидает параметр '@Username', который был не поставляется.

Я пробовал различные способы добавления параметров, включая Addwithvalue, но без успеха. Что мне не хватает?

+0

Можете ли вы представить свои полные C# код, связанные с этой хранимой процедурой? –

+1

Возможно, ваше имя vUsername равно null? Попробуйте вставить некоторую строку вручную вместо переменной vUsername, чтобы проверить, не является ли это проблемой. – chiapa

+2

Вы задали тип команды 'CommandType.StoredProcedure'? –

ответ

2

Поскольку вы, очевидно, добавить параметр в команде, есть еще две вещи, которые могут вызвать это исключение:

  1. Установите тип команды в CommandType.StoredProcedure:

    command.ComandType = CommandType.StoredProcedure; 
    
  2. Установите пользователь имя параметра до DBNull.Value, если vUsername is null:

    command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = vUsername ?? DBNull.Value; 
    
0

Не удалось vUsername be null? Когда вам нужно передать значение null в хранимую процедуру, вам необходимо передать константу DBNull.Value, а не null.

Что-то вроде

command.Parameters.Add("@Username", SqlDbType.VarChar,150).Value = 
     (vUsername == null) ? DbNull.Value : (object) vUsername; 
Смежные вопросы