- Custom Paging: Returning a set of records for the given page number and page size
- Dynamic query: Querying based on the where string passed thru parameter
- Dynamic sorting: Sorting based on the sort expression passed thru parameter
- SP_ExecuteSql: Executing sql statements included within parameters
- Common Table Expression: Similar to table variable
- function row_number(): returns the current row number in a result set
The sample sproc is written for NorthWind database. If you have NorthWind database installed then you can run this sproc and see how it works.
create procedure GetCustomersByPage
@PageSize int,
@PageNumber int,
@WhereString varchar(max),
@SortExpression varchar(200),
@TotalCount int output
as
begin
declare @FirstRecord int
declare @LastRecord int
set @FirstRecord = (((@PageNumber - 1) * @PageSize) + 1)
set @LastRecord = (@PageNumber * @PageSize)
declare @sql nvarchar(max)
DECLARE @ParmDefinition NVARCHAR(500)
SET @ParmDefinition=N'@TotalCount int OUTPUT'
set @sql = 'select @TotalCount = count(*) from dbo.Customers where 1=1 '+@WhereString+';
with PagedCustomers as (select row_number() over(order by '+@SortExpression+') as RowNumber, * from dbo.Customers where 1=1 '+@WhereString+')
SELECT * from PagedCustomers where RowNumber between '+cast(@FirstRecord as varchar)+'and '+cast(@LastRecord as varchar)
exec sp_executesql @sql, @ParmDefinition, @TotalCount=@TotalCount output
return @TotalCount
end
0 comments:
Post a Comment