2015-05-19 3 views
4

Я передаю значение хранимой процедуре, но он продолжает давать мне ошибку преобразования данных типа nvarchar в int. Что нужно изменить, чтобы удалить ошибку? Ниже мой фактический вызов, и хранимая процедураПеременная перехода от кода к хранимой процедуре

private static string ReturnPhoneNumber() 
{ 
string username = "Roy Orbinson"; 
string databaseConnection = "Data Source=EmployeeServer;Initial Catalog=StoreInfo;Integrated Security=True;MultipleActiveResultSets=True"; 
SqlConnection connection = new SqlConnection(databaseConnection); 
SqlCommand command = new SqlCommand("GimmeThatPhoneNumber", connection); 
command.CommandType = CommandType.StoredProcedure; 
command.Parameters.Add("@username", username); 

connection.Open(); 
var result = Convert.ToString(command.ExecuteScalar()); 
connection.Close(); 

return result; 
} 

SQL:

[dbo].[GimmeThatPhoneNumber] 
(
@username int 
) 

as 

Set NoCount On 

SELECT phonenumber 
FROM personelinformation 
where employeename = @username 

ответ

8

Вопрос заключается в том, что ваш входной параметр имеет int тип - но должен быть типом строки:

[dbo].[GimmeThatPhoneNumber] 
(
    @username int 
) 

@username должно быть:

@username nvarchar(200) --pick an appropriate size 
+0

Также возможно, что параметр является идентификатором пользователя (vs name), и код должен сначала найти идентификатор пользователя, связанный с этим именем пользователя – Gus

0

вы передаете имя_пользователя со значением имени пользователя. но вы переменное имя пользователя - это строка, а в вашей хранимой процедуре вы определили имя_пользователя как целое. вы должны либо изменить тип @username в процедуре на nvarchar, либо преобразовать имя строки в int.

Смежные вопросы