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

 更新时间:2011年11月02日 01:12:49   作者:  
扩展性很好的一个分页存储过程分享,需要的朋友可以参考下。
这是经常用的一个分页存储过程 希望大家指点不足
复制代码 代码如下:

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)

相关文章

  • sql server清理日志的实现步骤

    sql server清理日志的实现步骤

    清理 SQL Server 日志是数据库管理的一项重要工作,可以释放磁盘空间并提高数据库性能,本文就来详细的介绍一下,感兴趣的可以了解一下
    2023-10-10
  • 数据库触发器DB2和SqlServer有哪些区别

    数据库触发器DB2和SqlServer有哪些区别

    大部分数据库语句的基本语法是相同的,但具体到的每一种数据库,又有些不一样,例如触发器,DB2和SQL Server两种很大的不同。对数据库触发器DB2和SqlServer有哪些区别感兴趣的朋友一起看看本文吧
    2015-11-11
  • Sql Server 数据库索引整理语句,自动整理数据库索引

    Sql Server 数据库索引整理语句,自动整理数据库索引

    我们就要定期的对数据库的索引进行维护 我在MSDN上发现了这个脚本不过其中有些小问题我已经修正 大家可以使用这个脚本对数据库的索引进行日常维护
    2009-07-07
  • sqlserver中创建链接服务器图解教程

    sqlserver中创建链接服务器图解教程

    链接服务器在跨数据库/跨服务器查询时非常有用(比如分布式数据库系统中),本文将以图文方式详细说明如何利用SQL Server Management Studio在图形界面下创建链接服务器。
    2010-09-09
  • 解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题

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

    在安装SQL Server 2014的过程中,出现.net 3.5缺失,导致失败问题。怎么解决此问题呢?下面小编给大家分享解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题,一起看看吧
    2017-04-04
  • 数据库日常练习题,每天进步一点点(1)

    数据库日常练习题,每天进步一点点(1)

    下面小编就为大家带来一篇数据库基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • SQL SERVER 自增列

    SQL SERVER 自增列

    判断Table是否存在自增列(Identity column)
    2009-06-06
  • SQLServer批量更新两个关联表数据的方法

    SQLServer批量更新两个关联表数据的方法

    这篇文章主要介绍了SQLServer批量更新两个关联表数据的方法,提供了2种关联查询与更新语句的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • SQL窗口函数的使用方法

    SQL窗口函数的使用方法

    MySQL8.0版本之后,加入了窗口函数功能,简化了数据分析工作中查询语句的书写。本文主要介绍了SQL窗口函数的使用方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 简单触发器的使用 献给SQL初学者

    简单触发器的使用 献给SQL初学者

    简单触发器的使用 献给SQL初学者,使用sqlserver的朋友可以参考下。
    2011-09-09

最新评论