SQLServer2005 分页程序set ANSI_NULLS ON
SQLServer2005 分页程序
set QUOTED_IDENTIFIER ON
SQLServer2005 分页程序
go
SQLServer2005 分页程序
SQLServer2005 分页程序
SQLServer2005 分页程序
SQLServer2005 分页程序
ALTER PROCEDURE [dbo].[DividePage]
SQLServer2005 分页程序  
@tabname nvarchar(2000),--要查询表名
SQLServer2005 分页程序
  @fidlelist nvarchar(1000),--要查询字段
SQLServer2005 分页程序
  @wheresql nvarchar(1000),--查询条件
SQLServer2005 分页程序
  @pk nvarchar(20),--主键
SQLServer2005 分页程序
  @order nvarchar(100),--排序字段
SQLServer2005 分页程序
  @pagenum int,--要查询的页号
SQLServer2005 分页程序
  @rowsum int,--每页要显示的行数
SQLServer2005 分页程序
  @allpage int output,--计算总页数
SQLServer2005 分页程序
  @allrow int output--计算总行数
SQLServer2005 分页程序
AS
SQLServer2005 分页程序  
declare @sqlstr nvarchar(4000),@tmpwhere nvarchar(4000),@tmporder nvarchar(100)
SQLServer2005 分页程序
BEGIN
SQLServer2005 分页程序    
if(@order!='')
SQLServer2005 分页程序      
begin
SQLServer2005 分页程序       
set @tmporder=@order
SQLServer2005 分页程序      
end 
SQLServer2005 分页程序     
else
SQLServer2005 分页程序       
set @tmporder=@pk;
SQLServer2005 分页程序    
set @tmpwhere='';
SQLServer2005 分页程序    
if(@wheresql!='')
SQLServer2005 分页程序    
begin
SQLServer2005 分页程序       
set @tmpwhere=' where '+@wheresql;
SQLServer2005 分页程序    
end
SQLServer2005 分页程序    
set @sqlstr=N'select * from(select  '+@fidlelist+', ROW_NUMBER() OVER(order by '+@tmporder+') as row from '+@tabname+@tmpwhere+') tmp where row between '+cast(((@pagenum-1)*@rowsum+1as nvarchar)+' and '+cast(@pagenum*@rowsum as nvarchar);  
SQLServer2005 分页程序
exec sp_executesql @sqlstr
SQLServer2005 分页程序    
set @sqlstr=N'select @allrow1 =count('+@pk+') from '+ @tabname+@tmpwhere
SQLServer2005 分页程序    
exec sp_executesql @sqlstr,N'@allrow1 int OUTPUT',@allrow1=@allrow output    
SQLServer2005 分页程序    
if(@allrow%@rowsum<>0)
SQLServer2005 分页程序        
begin
SQLServer2005 分页程序          
set @allpage=@allrow/@rowsum+1--获得总页数
SQLServer2005 分页程序
        end
SQLServer2005 分页程序    
else
SQLServer2005 分页程序          
set @allpage=@allrow/@rowsum ----获得总页数
SQLServer2005 分页程序

SQLServer2005 分页程序
END

关键的函数ROW_NUMBER() 是sqlserver 2000 中没有的。

相关文章:

  • 2022-01-23
  • 2022-02-05
  • 2021-06-11
  • 2021-07-13
  • 2022-01-28
  • 2021-05-21
  • 2021-09-07
  • 2021-12-29
猜你喜欢
  • 2021-11-07
  • 2021-08-22
  • 2021-12-01
  • 2022-03-05
  • 2022-12-23
  • 2021-05-16
相关资源
相似解决方案