title: Stored procedure output parameter returns @Value
body: <p>I'm struggling with this thing for the past hour and I'm sure I'm missing something small, I have a stored procedure in SQL Server 2008 and C# code that I want to return the output parameters of my stored procedure. </p>
  
  <p>SQL :</p>
  
  <pre><code>Alter Procedure dbo.GetAssessment
      @UserID int,
      @AssessmentName varchar(255),
      @Score varchar(100) output,
      @Completed varchar(10) output,
      @DisplayName nvarchar(128) output,
      @Result varchar(2500) output
  as
  begin
          select @Score = A.Score, @Completed = A.Completed, @DisplayName = U.Displayname, @Result = A.Result 
          from Assessment A 
              inner join Users U
              on U.UserId = A.UserID
          where U.UserID = @UserId
          and AssessmentName = @AssessmentName
  
  end
  GO
  </code></pre>
  
  <p>C#</p>
  
  <pre><code>String SScore, SName, SResult, SComp;
              lblAsse.Text = Request.QueryString["AID"];
  
              InsertAssessment(lblAsse.Text, "No", 2, "N/A", "N/A");
  
              using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString))
              {
                  SqlParameter outScore = new SqlParameter("@Score", SqlDbType.VarChar,100){ Direction = ParameterDirection.Output };
                  SqlParameter outComp = new SqlParameter("@Completed", SqlDbType.VarChar,10){ Direction = ParameterDirection.Output };
                  SqlParameter outName = new SqlParameter("@DisplayName", SqlDbType.NVarChar, 128) { Direction = ParameterDirection.Output };
                  SqlParameter outResult = new SqlParameter("@Result", SqlDbType.VarChar,2500){ Direction = ParameterDirection.Output };              
  
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandType = System.Data.CommandType.StoredProcedure;
                  cmd.CommandText = "GetAssessment";
                  cmd.Parameters.AddWithValue("@AssessmentName", lblAsse.Text);
                  cmd.Parameters.AddWithValue("@UserId", 2);
                  cmd.Parameters.Add(outScore);
                  cmd.Parameters.Add(outComp);
                  cmd.Parameters.Add(outName);
                  cmd.Parameters.Add(outResult);
                  cmd.ExecuteScalar();
  
                  SScore = outScore.ToString();
                  SName = outName.ToString();
                  SResult = outResult.ToString();
                  SComp = outComp.ToString();
  
                  conn.Close();
  
                  lblAsse.Text = SScore;`
  </code></pre>
  
  <p>Output :</p>
  
  <pre><code>@Score
  </code></pre>
  
  <p>What can possibly be wrong with me or my code. Please help!</p>