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
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 Server 一个比较通用的分页存储过程
- SQL Server 2000和2005通用分页存储过程
- SQL Server 的通用分页显示存储过程(三种比较)
- 两个sql server 2000的通用分页存储过程
- 两个sql server 2000的通用分页存储过程
- 两个sql server 2000的通用分页存储过程
- 两个sql server 2000的通用分页存储过程
- 两个sql server 2000的通用分页存储过程
- SQL Server 的通用分页显示存储过程(三种比较)
- sql server 2000的分页存储过程
- 两个sql server 2000的通用分页存储过程
- 比较SQL Server 2005与SQL Server 2000分页技巧
- SQL Server 的通用分页显示存储过程
- SQL Server 分页通用存储过程(1)
- SQL Server 的通用分页显示存储过程(转)
- SQL Server 的通用分页显示存储过程
- SQL Server 的通用分页显示存储过程(zz)
- 两个Sql Server 2000的通用分页存储过程
- SQL Server 分页通用存储过程(2)
- SQL Server 的通用分页显示存储过程(转载)