C'est parce que vous définissez le paramètre dans .NET en tant que ReturnValue, ce qui équivaudrait en fait au scénario dans lequel vous utilisez RETURN dans la procédure stockée pour renvoyer un entier (ce que vous ne faites pas).
Au lieu de cela, vous devez définir le paramètre @strFailedEMPID en tant que ParameterDirection.Output dans votre code .NET. Si vous souhaitez transmettre une valeur ET en recevoir une via le paramètre, utilisez ParameterDirection.InputOutput.
Après avoir exécuté la sproc, il vous suffit alors :
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;
Alors....
lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar);
lsqlParam.Value = "0";
lsqlParam.Direction = ParameterDirection.InputOutput;
lsqlCmd.Parameters.Add(lsqlParam);
lsqlCmd.ExecuteNonQuery();
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;