Вы можете обработать некоторые из них с помощью SQL-запроса (при условии, что SQL Server 2005). Если вы введете RANK в качестве результата, вы можете определить, сколько строк занимает каждый результат. Вот пример запроса, который может быть внутри sproc:
SELECT RANK() OVER (ORDER BY b.BagID) as RowNum, b.BagID, b.BagInfo, m.MarbleInfo
FROM Bag b
JOIN Marble m ON m.BagID = b.BagID
WHERE b.BagID > @BagID
@ BagID будет «начальным» BagID (изначально -1), вы можете вызвать его с ранее завершенным BagID, если хотите.
Результаты будут выглядеть примерно так:
1,1,1
1,1,2
1,1,3
4,2,4
4,2,5
6,3,6
...
В пределах вашей нумерации страниц вы можете проверить столбец RowNum , чтобы определить, находится ли он в пределах размера страницы. Конечно, обратный ход был бы, если бы у вас была сумка с большим количеством шариков внутри и т. Д.
РЕДАКТИРОВАТЬ : Если функция RANK недоступна в вашей СУБД, аналогичный результат может быть достигнут в sproc с использованием временной таблицы и курсора.