Как правильно вызвать и получить результат хранимой процедуры из БД MS SQL, чтобы потом обработать его в коде Winforms?

Сама процедура:

CREATE PROCEDURE [dbo].[Authentification](@login as nvarchar(15),@password as nvarchar(64), @Answer NVARCHAR(max) OUTPUT)  

IF (Select count(*) from Users where Users.Login = @login AND Users.Password = @password) = 0     SET @Answer = 'Отсутствует в базе'  Return @Answer 

IF   (Select count(*) from Users where Users.Login = @login AND Users.Password = @password) = 1   SET @Answer = 'Присутствует в базе  Return @Answer 

При попытке получить результат вот так:

        sqlDataAdapter = new SqlDataAdapter("SELECT * from Users", sqlConnection);
        sqlBuilder = new SqlCommandBuilder(sqlDataAdapter);


        dataSet = new DataSet();

        sqlDataAdapter.Fill(dataSet, "Users");

        SqlCommand CheckAuth = new SqlCommand("Authentification", sqlConnection);
        CheckAuth.CommandType = CommandType.StoredProcedure;
        CheckAuth.Parameters.Add("@login", SqlDbType.VarChar).Value = AuthLogin.Text;
        CheckAuth.Parameters.Add("@password", SqlDbType.VarChar).Value = Verification.GetSHA256Hash(AuthPassword.Text);
        CheckAuth.Parameters.Add("@Answer", SqlDbType.VarChar).Value = "";

        //sqlConnection.Open();
         var result = CheckAuth.ExecuteScalar().ToString();

Выдаёт ошибку преобразования Nvarchar to int.


Ответы (1 шт):

Автор решения: Bulson

Как-то так, показываю только для выходного параметра процедуры

var answer = new SqlParameter("@Answer", SqlDbType.NVarChar);
answer.Direction = System.Data.ParameterDirection.Output;
CheckAuth.Parameters.Add(answer);

CheckAuth.ExecuteNonQuery();
var res = answer.Value.ToString();

Ну, а дальше используйте res.

→ Ссылка