SQL Server 2000下的通用分页存储过程,感觉比较实用就发出来了

本文介绍了一个用于SQL分页查询的存储过程实现方法,通过传递表名、字段名等参数,灵活地进行数据分页展示。该过程支持自定义排序方式、页大小及页数,同时提供了设置查询条件的功能。
参数注释得比较清晰,就不另外说明了。
create proc spPagination
(
    
@TName      nvarchar(100),       --表名    
    @FName      nvarchar(255),       --字段名   
    @OName      nvarchar(255),       --排序字段名    
    @ODirect    bit=1,               --排序方向,Desc
    @PSize      int=10,              --页大小    
    @PIndex     int=1,               --页数    
    @sWhere     nvarchar(1000)='',   --查询条件 
    @iCount     int=0 output         --记录数
)
/***********************
* name: spPagination
* author: zzcv
* version: 1.1
* date: 2007-6-9
***********************
*/

as
set nocount on
declare @sSQL   nvarchar(1000)       --临时变量

set @sSQL='select @iCount=count(*) from '+@TName
if @sWhere!=''
    
set @sSQL=@sSQL+' where '+@sWhere
exec sp_executesql @sSQL,N'@iCount int out',@iCount out

set @sSQL='select top '+str(@PSize)+' '+@FName+' from '+@TName+' where '+@OName
if @ODirect=0
    
set @sSQL=@sSQL+'>=(select max'
else
    
set @sSQL=@sSQL+'<=(select min'
set @sSQL=@sSQL+'('+@OName+') from (select top '+str((@PIndex-1)*@PSize+1)+' '+@OName+' from '+@TName
if @sWhere!=''
    
set @sSQL=@sSQL+' where '+@sWhere
set @sSQL=@sSQL+' order by '+@OName
if @ODirect=1
    
set @sSQL=@sSQL+' desc'
set @sSQL=@sSQL+')t)'
if @sWhere!=''
    
set @sSQL=@sSQL+' and '+@sWhere
set @sSQL=@sSQL+' order by '+@OName
if @ODirect=1
    
set @sSQL=@sSQL+' desc'
exec sp_executesql @sSQL
set nocount off
GO 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值