I came across this code in a project I inherited. I am curious if all the nested using statements make sense to anyone else. Also, wondering if this code could not be written in a better/leaner way?
private static Dictionary<string, List<string>> GetSubscriptionKeyList(string proc)
{
var addResults = new List<string>();
var deleteResults = new List<string>();
using (var conn = new OracleConnection(conStr))
{
conn.Open();
using (var cmd = new OracleCommand(proc, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
using (var adds = new OracleParameter
{
ParameterName = "p_add",
OracleDbType = OracleDbType.RefCursor,
Direction = ParameterDirection.Output,
Value = DBNull.Value
})
{
using (var deletes = new OracleParameter
{
ParameterName = "p_delete",
OracleDbType = OracleDbType.RefCursor,
Direction = ParameterDirection.Output,
Value = DBNull.Value
})
{
cmd.Parameters.Add(adds);
cmd.Parameters.Add(deletes);
using (var rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
addResults.Add(rdr.GetString(0));
}
rdr.NextResult();
while (rdr.Read())
{
deleteResults.Add(rdr.GetString(0));
}
}
}
}
}
conn.Close();
}
var result = new Dictionary<string, List<string>>
{
{"Adds", addResults},
{"Deletes", deleteResults}
};
return result;
}
OracleDbTypeproperty on theOracleParameter. There's onlyOracleType. \$\endgroup\$Oracle.DataAccess.Client.OracleDbType\$\endgroup\$