参数注释得比较清晰,就不另外说明了。
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
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
本文介绍了一个用于SQL分页查询的存储过程实现方法,通过传递表名、字段名等参数,灵活地进行数据分页展示。该过程支持自定义排序方式、页大小及页数,同时提供了设置查询条件的功能。

1104

被折叠的 条评论
为什么被折叠?



