Je to proto, že definujete parametr v .NET jako ReturnValue, což by se ve skutečnosti rovnalo scénáři, kdy používáte RETURN v rámci uložené procedury k vrácení celého čísla (což neděláte).
Místo toho musíte v kódu .NET definovat parametr @strFailedEMPID jako ParameterDirection.Output. Pokud chcete předat hodnotu a přijmout ji prostřednictvím parametru, použijte ParameterDirection.InputOutput.
Po provedení sproc pak stačí:
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;
Takže....
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;