您的位置:首页 > 数据库

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

2007-12-12 09:17 459 查看
参数注释得比较清晰,就不另外说明了。


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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: