"El procedimiento o la función tiene demasiados argumentos especificados", pero no lo hace

Gracias de antemano por su ayuda. Es muy apreciado.

Después de dos largas horas de análisis de desbordamiento de pila y otros resultados de Google por el motivo por el que obtengo un "Procedimiento o función con demasiados argumentos especificados", no he encontrado ninguna ayuda útil. La razón de esto es que en todas partes, leo que probablemente tengo demasiados argumentos especificados, los nombres incorrectos de mis argumentos o los tipos incorrectos. Ninguno de estos son verdaderos para mi caso. Aquí está mi código:

CREATE PROCEDURE dbo.sproc_UpdateInfo 

(
@Name nvarchar(40),
@UserId varchar(50),
@Password varchar(50),
@Address nvarchar(120)
)

AS
Update tbl_Users SET Name=@Name, Password=@Password, Address=@Address WHERE UserId=@UserId


RETURN

Y aquí está el lado C # de las cosas:

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = "sproc_UpdateInfo";
sqlCmd.CommandType = CommandType.StoredProcedure;

sqlCmd.Parameters.Add("@Name", SqlDbType.NVarChar, 40).Value = name;

sqlCmd.Parameters.Add("@UserId", SqlDbType.VarChar, 50).Value = userID;
sqlCmd.Parameters.Add("@Password", SqlDbType.VarChar, 50).Value = password;
sqlCmd.Parameters.Add("@Address", SqlDbType.NVarChar, 120).Value = address;

SqlConnection sqlConn = new SqlConnection(connectionString);

sqlCmd.Connection = sqlConn;

try
{
    sqlCmd.Connection.Open();

    int rowaffected = sqlCmd.ExecuteNonQuery(); //Error occurs here
    return rowaffected;
}
catch (SqlException se)
{
    throw new Exception("SqlException: sqlstr=" + sqlCmd.CommandText, se);
}
finally
{
    sqlCmd.Dispose();
    sqlConn.Close();
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta