Похоже, вы пытаетесь инициализировать общий список какого-либо типа, и при этом не хватает памяти.
Сама процедура может быть успешной, но также может возвращать много-много строк.
Возможно, вы захотите пройтись по своему коду и проверить результаты запроса перед инициализацией объекта List.
Боюсь, я не смогу больше отлаживать без подробностей.
Редактировать:
Вам нужно будет обрабатывать результаты хранимой процедуры партиями. Вы по-прежнему можете использовать SqlDataReader, но я бы предложил создать список с максимальной емкостью, относительно небольшой, например 1000, и читать из SqlDataReader до тех пор, пока вы не заполните список ... затем очистите список и начните чтение снова: 1011 *
SqlDataReader dr = cmd.ExecuteReader(); // where cmd is a SqlCommand
List<SomeType> items = new List<SomeType>(1000);
while(dr.Read()) {
// read the values for the row
SomeType obj = new SomeType(dr["id"], dr["value"], ...);
// add the object to the list
items.Add(obj);
// when the list is full, process it, and create a new one.
if(items.Count >= 1000) {
Process(items);
items = new List<SomeType>(1000);
}
}