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

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Troy Hunt's Blog
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
B
Blog
NISL@THU
NISL@THU
月光博客
月光博客
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
L
Lohrmann on Cybersecurity
The Cloudflare Blog
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
S
Secure Thoughts
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
H
Hacker News: Front Page
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
P
Privacy & Cybersecurity Law Blog
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
GRAHAM CLULEY
W
WeLiveSecurity
小众软件
小众软件
Recorded Future
Recorded Future
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - 杰客

一个关于pynoi游戏的C语言编程 大型网站架构 大型网站架构不得不考虑的10个问题 程序员自我培养 什么是SOA 用Date.ToString()输出中英文月份 - 杰客 - 博客园 深入浅出理解索引结构 学习正则表达式 让VS 2008支持Subversion(转) SQL里类似SPLIT的分割字符串函数 趣味智力题 程序员为什么单身?细数程序员"六宗罪"(摘抄) 存储过程的一些小技巧 Hello NHibernate ASP.NET中的常用正则表达式 c#2.0 System.Net.Mail 发送email ASP.NET2.0中配置文件的加密与解密(转载) (原创)整合 PayPal、VeriSign、Authorize.NET 在线支付 ASP.NET 2.0(C#)中System.Web.Caching的应用
SQL Server 2000和2005通用分页存储过程
杰客 · 2007-11-01 · via 博客园 - 杰客

-----------------------------------------
--说明:共用分页 适用于SQL Server 2005
--创建人:Jackey
--日期:2007-11-1
--@table varchar(50),--@table 表名或视图名
--@key 主键ID 当@sortExpression为Null时则其值为@key
--@fieldList 要查询的字段
--@filterExpression 条件(需要带字符where)允许传空值
--@sortExpression 排序方式 允许传空值
--@PageSize:每页显示记录数
--@pageindex:当前页
--@isReturnList:0 返回页数 1 返回页数和记录列表
--@RecordCount:返回总记录数
-----------------------------------------
ALTER procedure [dbo].[sp_DataPerPage]
(
 @table varchar(50),
 @key varchar(20),
 @fieldList varchar(256),
 @filterExpression varchar(8000),
 @sortExpression varchar(100),
 @pagesize int,
 @pageindex int,
 @isReturnList bit,
 @RecordCount int output
)
AS
 SET nocount on
 IF(@sortExpression = '') SET @sortExpression = @key + ' desc'
 create table #tb
 (
   rows int
 )
 EXEC ('insert into #tb SELECT count(*) from ' + @table +' '+ @filterExpression)
 SELECT @RecordCount=rows from #tb --利用临时表来动态赋值记录统计数
 drop table #tb

 IF(@isReturnList=1)
 BEGIN
   DECLARE @MinPage int, @MaxPage int
   SET @MinPage = (@pageindex - 1) * @PageSize + 1
   SET @MaxPage = @MinPage + @PageSize-1
   EXEC('select * from (select '+@fieldList+',Row_Number() over(Order By '+@sortExpression+') as RowNumber from '+@table+' '+@filterExpression+') as a where RowNumber between '+@MinPage+' and '+@MaxPage)
 END

-----------------------------------------
--说明:共用分页 适用于SQL Server 2000
--创建人:Jackey
--日期:2007-11-1
--@table varchar(50),--@table 表名或视图名
--@key 主键ID 当@sortExpression为Null时则其值为@key
--@fieldList 要查询的字段
--@filterExpression 条件(需要带字符where)允许传空值
--@sortExpression 排序方式 允许传空值
--@PageSize:每页显示记录数
--@pageindex:当前页
--@isReturnList:0 返回页数 1 返回页数和记录列表
--@RecordCount:返回总记录数
-----------------------------------------
Create procedure [dbo].[sp_page]
(
 @table varchar(50),
 @key varchar(20),
 @selectcolumns varchar(256),
 @orderbycolumn varchar(20),
 @orderDescOrAsc varchar(5),
 @pagesize int,
 @pageindex int,
-- @docount bit,
 @sqlWhere varchar(8000),
 @RecordCount int output
)
as
set nocount on
declare @sql varchar(8000)
--declare @RecordCount int
declare @abDerection varchar(10)
if @orderDescOrAsc = 'ASC'
set @abDerection = ' DESC '
else
set @abDerection = ' ASC '

create table #tb
(
  rows int
)
set @sql = 'insert into #tb select count(*) from ' + @table + @sqlWhere

exec (@sql)

select @RecordCount=rows from #tb --利用临时表来动态赋值记录统计数

drop table #tb

--if(@docount=1)
--select @RecordCount
--else
-- begin
 if(@pageindex=1)
  exec('select top ' + @pagesize + ' ' + @selectcolumns + ' from ' + @table  + @sqlWhere + ' order by ' + @orderbycolumn + ' ' + @orderDescOrAsc)
 else
  begin
  declare @PageUpperBound int
  declare @endrecords int
 
  set @PageUpperBound=@pageindex*@pagesize
  if(@PageUpperBound-@pagesize)>=@RecordCount
  select ''
  else if(@RecordCount-(@PageUpperBound-@pagesize)<=@pagesize)
   begin
   set @endrecords=@RecordCount-(@PageUpperBound-@pagesize)
   exec('select ' + @selectcolumns + ' from
(select top ' + @endrecords + ' ' + @selectcolumns + ' from ' + @table  + @sqlWhere + ' ' + ' order by ' + @orderbycolumn + ' ' + @abDerection + ')A
order by '+ @orderbycolumn + ' ' + @orderDescOrAsc)
   end
  else
  exec('select ' + @selectcolumns + ' from
(select top ' + @pagesize + ' * from (
select top ' + @PageUpperBound + ' ' + @selectcolumns + ' from ' + @table  + @sqlWhere + ' ' +' order by '+ @orderbycolumn +' ' + @orderDescOrAsc + ')A
order by ' + @orderbycolumn + ' ' + @abDerection + ')B order by '+ @orderbycolumn + ' ' + @orderDescOrAsc)
 

end
-- end