Asp.net 以varchar作为输出参数调用存储过程

Asp.net 以varchar作为输出参数调用存储过程,asp.net,sql,stored-procedures,Asp.net,Sql,Stored Procedures,我想将存储过程的输出参数分配给会话变量。因此,基本上,我希望调用一个具有varchar out参数的存储过程。存储过程如下所示: Alter proc spCheckTaskPerformed @TaskId int, @Email varchar(100), @Status varchar(100) output as begin Select @Status = Status from tblTaskPerformed wher

我想将存储过程的输出参数分配给会话变量。因此,基本上,我希望调用一个具有varchar out参数的存储过程。存储过程如下所示:

    Alter proc spCheckTaskPerformed
    @TaskId int,
    @Email varchar(100),
    @Status varchar(100) output
    as
    begin
    Select @Status = Status from tblTaskPerformed
    where [Email] = @Email and [TaskId]=@TaskId
    end
我拥有的代码如下:

      private void CheckTaskPerformed()
{
    string CS = ConfigurationManager.ConnectionStrings["EasyRozMoney_ConnectionString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("spCheckTaskPerformed", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@TaskId", lblTaskId.Text);
        cmd.Parameters.AddWithValue("@Email", Session["Email"].ToString());

        SqlParameter outputParameter = new SqlParameter();
        outputParameter.ParameterName = "@Status";
        outputParameter.SqlDbType = System.Data.SqlDbType.VarChar;
        outputParameter.Direction = System.Data.ParameterDirection.Output;
        cmd.Parameters.Add(outputParameter);

        cmd.ExecuteNonQuery();

        string Status = outputParameter.Value.ToString();
        lblStatus.Text = "This task has " + Status;
    }
}
但是我收到一条错误消息-String[2]:Size属性的大小无效,为0。在下面一行

    cmd.ExecuteNonQuery();

必须将值发送到状态或指定空输入:

 @Status varchar(100) = null output 

是的,您还必须将C侧的
Size
属性设置为
100