Ниже приведен пейджинговый запрос для SQL-сервера, он работает нормально без динамического порядка по переменной @ pOrderBy .
Я хочу реализовать две вещи в этом запросе.
- Я хочу отсортировать строки в соответствии с именем столбца, который я передаю.
Я хочу выполнить еще один запрос, чтобы получить общее количество строк, чтобы я мог отображать количество страниц в моем пользовательском интерфейсе.
ALTER PROCEDURE [dbo].[usp_get_all_groups]
-- Add the parameters for the stored procedure here
@pStartIndex smallint,
@pPageSize tinyint,
@pOrderBy varchar(20)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT GroupTable._id,
GroupTable.GroupCode,
GroupTable.Type,
GroupTable.Description
From(
Select ROW_NUMBER() OVER (
ORDER BY UG._id,
UG.GroupCode,
UG.Type,
UG.Description ) as [Row_Number],
UG._id,
UG.GroupCode,
UG.Type,
UG.Description
From UserGroups as UG
) as GroupTable
where GroupTable.[Row_Number] BETWEEN @pStartIndex AND @pStartIndex + @pPageSize
ORDER BY GroupTable.[Row_Number]
END