SQL Server 扩展性很好的一个分页存储过程
2022-11-12 09:46:19
内容摘要
这篇文章主要为大家详细介绍了SQL Server 扩展性很好的一个分页存储过程,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!这是经常用的一个
文章正文
这篇文章主要为大家详细介绍了SQL Server 扩展性很好的一个分页存储过程,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
这是经常用的一个分页存储过程 希望大家指点不足代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <code>USE [a6756475746] GO /****** Object: StoredProcedure [dbo].[tbl_order_SearchWhereAndPage] Script Date: 11/01/2011 09:37:39 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[tbl_order_SearchWhereAndPage] @AllCount int OUTPUT, @PageIndex int, @PageSize int , @minDate datetime, @maxDate datetime AS begin DECLARE @PageLower int set @PageLower=@PageSize * @PageIndex DECLARE @PageUpper int set @PageUpper= @PageLower + @PageSize - 1 DECLARE @SearchSQL nvarchar(4000) set @SearchSQL= 'SELECT * ,( ROW_NUMBER() OVER (ORDER BY [ID] DESC) -1 ) AS RowNumber FROM tbl_order WHERE (1=1) ' DECLARE @SearchSQLCount nvarchar(4000) set @SearchSQLCount= 'SELECT @count=Count(*) FROM tbl_order WHERE (1=1) ' declare @Result [varchar](5000) set @Result= '' if @minDate>convert(datetime, '1900-1-2' ) begin set @Result=@Result+ ' and oDeliveryDate >= ' '' +convert(varchar(20),@minDate)+ '' '' end if @maxDate > convert(datetime, '1900-1-2' ) begin set @Result=@Result+ ' and oDeliveryDate <= ' '' +convert(varchar(20),dateadd(dd,1,@maxDate))+ '' '' end set @SearchSQLCount=@SearchSQLCount+@Result set @SearchSQL=@SearchSQL+@Result SET @SearchSQL = 'WITH t AS (' + @SearchSQL +' ) SELECT * FROM t WHERE [RowNumber] BETWEEN '+ convert(varchar(50),@PageLower) +' AND '+ convert(varchar(50),@PageUpper) + ' ORDER BY RowNumber ' exec (@SearchSQL) exec sp_executesql @SearchSQLCount ,N '@count as int out' ,@AllCount out print @SearchSQL print @AllCount end exec (@Result) </code> |
注:关于SQL Server 扩展性很好的一个分页存储过程的内容就先介绍到这里,更多相关文章的可以留意
代码注释