У меня есть SqlCommand
, который возвращает более 100000 строк (потенциально больше в будущем). Я хотел бы разбить создание списка (listToUse
) на 500 записей за раз. Я понимаю, что мы можем сделать это в SQL довольно легко, но я вызываю хранимую процедуру из кода, поэтому хотел бы, чтобы aovid вызывал хранимую процедуру несколько раз.Выберите 500 строк за раз в SqlCommand в коде
Я хотел бы, чтобы выбрать строки
- 0 до 500 вызовов метода
GenereateUnpackConfigList(cmd)
- 501 до 1000 Метод
GenereateUnpackConfigList(cmd)
вызова и так далее
listToUse
простая коллекция класса со свойствами ,
Любая помощь очень ценится!
Код:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SP_RPT_V5_LS_EXP_GetOutputsForUnpackingByBatchID";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@BatchID", BatchID);
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
cmd.Parameters.Add(param);
listToUse = GenereateUnpackConfigList(cmd);
Вы знаете, какие столбцы возвращаются из команды? На основании этого вы можете создать класс. Используйте метод cmd.ExecuteReader(), чтобы получить SQLDataReader, заполненную данными. Перебирайте читателя и каждый раз заполняйте объект класса и добавляйте его в список. Поделитесь информацией о возвращаемых данных из хранимой процедуры. Я смогу дать подробный ответ. –
перезаписать сохраненную процедуру для использования подкачки? – Fran
В SQL Server ** 2012 ** и новее вы можете использовать [OFFSET-FETCH] (https://www.mssqltips.com/sqlservertip/2362/overview-of-offset-and-fetch-feature-of- sql-server-2012 /) функции –