I don't believe you want to use ExecuteScalar for this. Execute scalar will only return a single value (first column of first row of dataset with everything else being ignored). I think ExecuteReader is what you want.
I think something like this might work:
using(OracleDataReader reader = oCommand.ExecuteReader())
{
while(reader.read)
{
TEMP.Add(Convert.ToInt32(reader.Item("{the name of column containing int value}"),reader.Item("{the name of column containing string}").ToString());
}
}