扩展性很好的一个分页存储过程分享

所属分类: 数据库 / MsSql 阅读数: 287
收藏 0 赞 0 分享
这是经常用的一个分页存储过程 希望大家指点不足
复制代码 代码如下:

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)
更多精彩内容其他人还在看

SqlServer 在事务中获得自增ID的实例代码

这篇文章主要介绍了 SqlServer 在事务中获得自增ID实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLServer性能优化--间接实现函数索引或者Hash索引

本文主要介绍了SQLServer性能优化--间接实现函数索引或者Hash索引的解决方式。具有很好的参考价值。下面跟着小编一起来看下吧
收藏 0 赞 0 分享

SQL Server日期加减函数DATEDIFF与DATEADD用法分析

这篇文章主要介绍了SQL Server日期加减函数DATEDIFF与DATEADD用法,结合分析SQL Server使用DATEDIFF与DATEADD函数获取常见的周、月、天等日期相关运算技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLServer数据库中开启CDC导致事务日志空间被占满的原因

这篇文章主要介绍了SQLServer数据库中开启CDC导致事务日志空间被占满的原因分析和解决办法(REPLICATION),需要的朋友可以参考下
收藏 0 赞 0 分享

解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题

在安装SQL Server 2014的过程中,出现.net 3.5缺失,导致失败问题。怎么解决此问题呢?下面小编给大家分享解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题,一起看看吧
收藏 0 赞 0 分享

SQL Server 2016 无域群集配置 AlwaysON 可用性组图文教程

这篇文章主要介绍了SQL Server 2016 无域群集配置 AlwaysON 可用性组图文教程,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server 2016 配置 SA 登录教程

这篇文章主要介绍了SQL Server 2016 配置 SA 登录教程以及sqlserver2016 sa账号登录不上的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

MSSQL 2000 使用帮助(sql server简明教程)

这篇文章主要介绍了MSSQL 2000 使用帮助(sql server简明教程),需要的朋友可以参考下
收藏 0 赞 0 分享

SQL Server实时同步更新远程数据库遇到的问题小结

这篇文章主要介绍了SQL Server实时同步更新远程数据库遇到的问题小结,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle 删除用户和表空间详细介绍

这篇文章主要介绍了Oracle 删除用户和表空间详细介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多