devolviendo el valor int del procedimiento almacenado y verifíquelo en el código asp.net para validar el formulario de inicio de sesión

¿Cuál es la secuencia verdadera para ejecutar este código como lo intenté muchas veces pero no obtengo un resultado válido

// el código del procedimiento almacenado de 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

y el código asp.net es

 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();

Respuestas a la pregunta(3)

Su respuesta a la pregunta