процедуры или функция «вход» ожидает параметр «@Abc», который не был снабженПроцедура или функция ожидает параметр, который не был снабжен
4 часа поиска и не пытаемся и не использовать, я уже поставил этот параметр (копирование/вставка) и количество параметров, заданных процедуре, одинаковы для процедуры и в порядке.
@Abc - выходной параметр.
Хранится определение процедуры:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[login]
(
@Abc int output,
@firstname varchar(255) output,
@lastname varchar(255) output,
@Email varchar(255),
@pass varchar(255)
)
As
begin
if not exists (select Email from user_1 where [email protected])
select @Abc = 0
else begin
if not exists (
select Email from user_1 where email [email protected] and password = @pass
)
select @Abc = 1
else
select @Abc = 2,@firstname = u.first_name ,@lastname=u.last_name from user_1 u where u.email = @email
end
end
кода для вызова хранимой процедуры:
myCon.Open();
TextBox username = UserName;
TextBox password = Password;
SqlCommand myCommand = new SqlCommand("login", myCon);
SqlParameter count= myCommand.Parameters.Add("@Abc", SqlDbType.Int);
count.Direction = ParameterDirection.Output;
SqlParameter fnp = myCommand.Parameters.Add("@firstname", SqlDbType.VarChar,255);
fnp.Direction = ParameterDirection.Output;
SqlParameter lnp = myCommand.Parameters.Add("@lastname", SqlDbType.VarChar, 255);
lnp.Direction = ParameterDirection.Output;
myCommand.Parameters.AddWithValue("@Email",username.Text);
myCommand.Parameters.AddWithValue("@pass", password.Text);
myCommand.ExecuteNonQuery();
myCon.Close();
Как и в сторону - пожалуйста, скажите мне, что вы не хранить пароли в незашифрованном виде в базе данных. –
Вы должны проверить [Может ли мы перестать использовать AddWithValue() уже?] (Http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/) и будьте осторожны при использовании '.AddWithValue()' - это может привести к неожиданным и неожиданным результатам ... –
@ j.steen это школьный проект, а не реальная база данных – daredevil