У меня есть сообщение исключения:не могу получить выход из хранимой процедуры
The formal parameter "@LoginHash" was not declared as an OUTPUT parameter, but the actual parameter passed in requested output.
Мой код базы данных:
create table Account
(
Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Identifier INT NOT NULL,
Passphrase INT NOT NULL
);
GO
CREATE PROCEDURE Authenticate (@LoginHash INT, @PasswordHash INT, @Result BIT OUTPUT)
AS
BEGIN TRANSACTION
if ((select count(Identifier) from Account where ([email protected] and [email protected]))>0)
set @Result=1
else
set @Result=0;
COMMIT
GO
Мой код ado.net приложение:
SqlCommand cmd = new SqlCommand("Authenticate", SqlCon);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = cmd.Parameters.Add("LoginHash", SqlDbType.Int);
par.Direction = ParameterDirection.Input;
SqlParameter par1 = cmd.Parameters.Add("PasswordHash", SqlDbType.Int);
par.Direction = ParameterDirection.Input;
SqlParameter par2 = cmd.Parameters.Add("Result", SqlDbType.Bit);
par.Direction = ParameterDirection.Output;
var result = (bool)cmd.ExecuteScalar();//exception there
Как почини это ? я изменил код на следующее:
SqlCommand cmd = new SqlCommand(Text, SqlCon);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter par = cmd.Parameters.AddWithValue("@LoginHash", (SqlInt32)loginHash);
SqlParameter par1 = cmd.Parameters.AddWithValue("@PasswordHash", (SqlInt32)passwordHash);
SqlParameter par2 = cmd.Parameters.Add("@Result",SqlDbType.Bit);
par2.Direction = ParameterDirection.Output;
И теперь у меня есть NullReferenceException ошибки() произошедший в одной и той же линии.
Stink to copy & paste;) – Gonzix
@Gonzix Случается лучшим из нас –
Yup, не пытаясь быть критиком ... par.Direction задано 3 раза ... Просто – Gonzix