使用ROW_NUMBER()的分页存储过程

简介: 今天做一个全新的项目的时候用到分页,从以前以前做的项目中找出个分页存储过程,可以直接通过传入表名进行分页的,用到了ROW_NUMBER()函数,所以只适用于MSSQL2005以上,先记下来,以备不时之需。

今天做一个全新的项目的时候用到分页,从以前以前做的项目中找出个分页存储过程,可以直接通过传入表名进行分页的,用到了ROW_NUMBER()函数,所以只适用于MSSQL2005以上,先记下来,以备不时之需。

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
  --   =============================================
--  Author:        牛腩
--  Create date:  2009 - 07 - 22   12 : 41
--  Description:    分页,用到了ROW_NUMBER()
--   =============================================
create PROCEDURE [dbo].[proc_ShowPage]
@tblName   varchar(
255 ),        --  表名
@strGetFields varchar(
1000 =   ' * ' --  需要返回的列,默认 *
@strOrder varchar(
255 ) = '' ,       --  排序的字段名,必填
@strOrderType varchar(
10 ) = ' ASC ' --  排序的方式,默认ASC
@PageSize   
int   =   10 ,           --  页尺寸,默认10
@PageIndex 
int   =   1 ,            --  页码,默认1
@strWhere varchar(
1500 =   ''   --  查询条件 (注意: 不要加  where )
AS

declare @strSQL   varchar(
5000 )

if  @strWhere  != ''
set  @strWhere = '  where  ' + @strWhere

set  @strSQL =
' SELECT * FROM ( ' +
    
' SELECT ROW_NUMBER() OVER (ORDER BY  ' + @strOrder + '   ' + @strOrderType + ' ) AS pos, ' + @strGetFields + '   ' +
    
' FROM  ' + @tblName + '   ' + @strWhere +
' ) AS sp WHERE pos BETWEEN  ' + str((@PageIndex - 1 ) * @PageSize + 1 ) + '  AND  ' + str(@PageIndex * @PageSize)

exec (@strSQL)

下面是调用的示例,这里可以采用join连接

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
EXEC      [ proc_ShowPage ]
        
@tblName   =  N ' (project p inner join projectca ca on p.caid=ca.id) ' ,
        
@strGetFields   =  N ' p.title,ca.caname ' ,
        
@strOrder   =  N ' p.id ' ,
        
@strOrderType   =  N ' desc ' ,
        
@PageSize   =   12 ,
        
@PageIndex   =   1 ,
        
@strWhere   =  N ''


 

 

目录
相关文章
|
6月前
|
存储
SQLServer分页获取数据的存储过程
SQLServer分页获取数据的存储过程
24 0
|
6月前
|
存储 开发框架 前端开发
基于MySQL 实现通用分页存储过程(下篇-超详细)(上)
基于MySQL 实现通用分页存储过程(下篇-超详细)
65 0
|
6月前
|
存储 XML 安全
基于MySQL 实现通用分页存储过程(下篇-超详细)(下)
基于MySQL 实现通用分页存储过程(下篇-超详细)
37 0
|
9月前
|
存储
【干货】SqlServer 总结几种存储过程分页的使用
【干货】SqlServer 总结几种存储过程分页的使用
|
11月前
|
存储 SQL Perl
PL/SQL编程—分页功能(存储过程)
PL/SQL编程—分页功能(存储过程)
87 0
|
存储
通用分页存储过程,干货无污染
通用分页存储过程,干货无污染