returning int value do procedimento armazenado e verifique-o no código asp.net para validar o formulário de login

Qual é a verdadeira sequência para executar esse código, já que tentei várias vezes, mas não recebo um resultado válido

// o código do procedimento armazenado SQL

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[login_proc] @username Varchar =50, @password varchar=50
as
Declare @user_name varchar , @pass_word varchar, @result varchar 
Set @user_name = @username
Set @pass_word = @password

if EXISTS (select username , password from data where username= @user_name) 
set @result= 1
else 
set @result=0

return @result

e o código asp.net é

 SqlConnection conn = new SqlConnection ("Data Source=ANAGUIB-LAPNEW\\SQLEXPRESS;Initial Catalog=account;Integrated Security=True");
        SqlCommand cmd = new SqlCommand("login_proc",conn);
          cmd.CommandType = CommandType.StoredProcedure;
          SqlParameter paramReturnValue = new SqlParameter();
          paramReturnValue.ParameterName = "@result";
           paramReturnValue.SqlDbType = SqlDbType.Int;
           cmd.Parameters.Add(paramReturnValue);
           cmd.Parameters["@result"].Direction = ParameterDirection.Output;
           conn.Open();

         cmd.Parameters.AddWithValue("@username", TextBox1.Text);
         cmd.Parameters.AddWithValue("@password", TextBox2.Text);
         cmd.ExecuteScalar();
         string retunvalue = (string)cmd.Parameters["@result"].Value;

         if (retunvalue == "1")
        {
            Response.Redirect("hello.aspx");
        }
        else 
        {
            Response.Write("error");
        }

        conn.Close();

questionAnswers(3)

yourAnswerToTheQuestion