Gespeicherte Prozedur output-parameter zurückgibt @Wert

Bin ich zu kämpfen mit diesem Ding für die letzten Stunden und ich bin sicher, ich bin etwas fehlt klein, ich habe eine gespeicherte Prozedur in SQL Server 2008 und C# - code, den ich zurückgeben möchte, die output-Parameter von meinen gespeicherten Prozedur.

SQL :

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

C#

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;`

Ausgabe :

@Score

Was möglicherweise falsch mit mir oder meinem code. Bitte um Hilfe!!

Schreibe einen Kommentar