2010-08-26 3 views
0

Я пытаюсь получить вывод хранимой процедуры в функцию, но с моим кодом я всегда получаю сообщение об ошибке, указывающее, что выходной параметр не указан. Может ли помочь?Ошибка при получении вывода хранимой процедуры

код здесь .....

public int UserAuthentication(String username, String password) 
{ 
    SqlConnection conn = new SqlConnection("Data Source=...\\..; Initial Catalog=CUSTOMER360;User ID=sa;password=******"); 
    SqlCommand command = new SqlCommand("sp_Campaign_UserAuthentication", conn); 
    command.CommandType = CommandType.StoredProcedure; 
    command.Parameters.Add(new SqlParameter("@login_id", SqlDbType.VarChar, 50, "loginid")); 
    command.Parameters.Add(new SqlParameter("@password", 
     SqlDbType.VarChar,50, 
     "password")); 
    SqlParameter ret = command.Parameters.Add(" @result", SqlDbType.Int); 
    ret.Direction = ParameterDirection.ReturnValue; 
    command.Parameters["@login_id"].Value = username; 
    command.Parameters["@password"].Value = password; 
    conn.Open(); 
    command.ExecuteNonQuery(); 
    conn.Close(); 
    return (int)ret.Value; 
} 
+1

Я предполагаю, что пароль пользователя sa, который вы опубликовали, является фиктивной строкой? :-) –

ответ

0

Я думаю, что параметр ReturnValue должен быть первым в (редактирования) списка команда параметров.

Кроме того, попробуйте выполнить запрос значения возвращаемого параметра перед закрытием соединения.

Убедитесь, что хранимая процедура вызывает

RETURN (@SomeReturnValue) 

Наконец, попробуйте удалить ведущее место в вашем «@result» имя параметра, на всякий случай.

+0

@result - это возвращаемое значение, и оно находится в списке параметров. И я также попытался получить возвращаемое значение перед закрытием соединения, но результат такой же ......... – Alivia

+0

Ваш код имеет параметр в качестве третьего параметра добавлен в список параметров команды. Переместите его как первый. –

+0

Не могли бы вы также разместить заголовок хранимой процедуры? Будет указано только имя proc и список параметров. Интересно, вы перепутали типы параметров Output и ReturnValue. –