惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - ssihc

MySql 编码设置 一键设置JDK环境变量 一键java_home&tomcat_home MyEclipse 优化 - ssihc - 博客园 ECShop flash 相册 - ssihc shell SqliteHelper - ssihc - 博客园 C# SQLite - ssihc - 博客园 将资源文件中的数据写回磁盘 获取下级用户列表 备份数据库 获取SQL Server数据库元数据的方法 通用分页存储过程3 通用分页存储过程2 通用分页存储过程1 列转字符串 获取整串汉字字符的所有首字母 选择不是最小的所有记录 实现split功能 的函数
通用分页存储过程4
ssihc · 2009-02-16 · via 博客园 - ssihc

 CREATE proc [dbo].[page]
     
@RecordCount int output,
     
@ReturnCount bit,
     
@QueryStr nvarchar(1000)='table1',      --表名、视图名、查询语句
     @PageSize int=20,             --每页的大小(行数)
     @PageCurrent int=2,             --要显示的页 从0开始
     @FdShow nvarchar (2000)='*',         --要显示的字段列表
     @IdentityStr nvarchar (100)='id',     --主键
     @WhereStr nvarchar (2000)='1=1',
     
@FdOrder nvarchar(100)='desc'         --排序    只能取desc或者asc
 asset nocount on
 
declare
 
@sql nvarchar(2000)if @WhereStr = ''
     
begin
     
set @WhereStr = '1=1'
     
endif @ReturnCount=1
     
begin
     
declare @tsql nvarchar(200)
     
set @tsql=N'select @RecordCount = count(*) from ' + @QueryStr + ' where ' + @WhereStr
     
exec sp_executesql @tsql,N'@RecordCount int output',@RecordCount output
     
endif @PageCurrent = 0
     
begin
     
set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' ' + @FdOrder
     
endelse
     
begin
         
if upper(@FdOrder= 'DESC'
             
begin
             
set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' and ' + @IdentityStr + '< ( select min(' + @IdentityStr + ') from (select top ' + cast(@PageSize*@PageCurrent as nvarchar(10)) + ' ' + @IdentityStr + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' desc) as t) order by ' + @IdentityStr + ' desc'
             
end
         
else
             
begin
             
set @sql = 'select top ' + cast(@PageSize as nvarchar(3)) + ' ' + @FdShow + ' from ' + @QueryStr + ' where ' + @WhereStr + ' and ' + @IdentityStr + '> ( select max(' + @IdentityStr + ') from (select top ' + cast(@PageSize*@PageCurrent as nvarchar(10)) + ' ' + @IdentityStr + ' from ' + @QueryStr + ' where ' + @WhereStr + ' order by ' + @IdentityStr + ' asc) as t) order by ' + @IdentityStr + ' asc'
             
end
      
end--print @sql

 
execute(@sql)