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

推荐订阅源

W
WeLiveSecurity
T
Tenable Blog
Project Zero
Project Zero
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
S
Securelist
Know Your Adversary
Know Your Adversary
Vercel News
Vercel News
IT之家
IT之家
V
V2EX
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
博客园_首页
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost

博客园 - JoyBin

使用CSS为图片添加更多趣味的5种方法. IT工作者要保护自己的头发啊.. document.execCommand()用法说明 用三层架构与设计模式思想部署企业级数据库业务系统开发(转) C#代码与javaScript函数的相互调用 IE6 png 透明 (三种解决方法)(转) - JoyBin 程序人生就像一场恶梦。 常用正则表达式 [转载]Meta标签详解 三级联动-完美版 - JoyBin - 博客园 asp.net(C#)服务器绝对路径转换成URL相对路径[修改] (转) flash的菜单与asp.net进行交互(转) 把生成的缩略图存到数据库中 添加html内容(insertAdjacentHTML和insertAdjacentText) 母版页判断登陆 及 母版页与内容页的执行顺序 常用.net代码 常用JS代码 WMPLib.WindowsMediaPlayer 的用法 网页播放器 PlayState 的用法
SQLServer存储过程分页
JoyBin · 2008-03-08 · via 博客园 - JoyBin


【摘要】
这个存储过程的功能比较强大,用在项目中非常的适用,尤其是在百万级数据上。

【全文】

SQL代码

CREATE PROCEDURE prcPageResult    
-- 获得某一页的数据 --    
@currPage int = 1,                                    --当前页页码 (即Top currPage)    
@showColumn varchar(2000= '*',           --需要得到的字段 (即 column1,column2,)    
@tabName varchar(2000),                           --需要查看的表名 (即 from table_name)    
@strCondition varchar(2000= '',              --查询条件 (即 where condition) 不用加where关键字    
@ascColumn varchar(100= '',                 --排序的字段名 (即 order by column asc/desc)    
@bitOrderType bit = 0,                            --排序的类型 (0为升序,1为降序)    
@pkColumn varchar(50= '',                   --主键名称    
@pageSize int = 20                                --分页大小    
   
AS   
BEGIN -- 存储过程开始    
--
 该存储过程需要用到的几个变量 --    
DECLARE @strTemp varchar(1000)    
DECLARE @strSql varchar(4000)                   --该存储过程最后执行的语句    
DECLARE @strOrderType varchar(1000)      --排序类型语句 (order by column asc或者order by column desc)    
   
BEGIN   
IF @bitOrderType = 1   -- bitOrderType=1即执行降序    
BEGIN   
    
SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC'   
    
SET @strTemp = '<(SELECT min'   
END   
ELSE   
BEGIN   
    
SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC'   
    
SET @strTemp = '>(SELECT max'   
END   
   
IF @currPage = 1    -- 如果是第一页    
BEGIN   
    
IF @strCondition != ''   
        
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+    
            
' WHERE '+@strCondition+@strOrderType    
    
ELSE   
        
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+@strOrderType    
END   
   
ELSE    -- 其他页    
BEGIN   
    
IF @strCondition !=''   
        
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+    
        
' WHERE '+@strCondition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+    
        
' '+@pkColumn+' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType    
    
ELSE   
        
SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+    
        
' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+    
        
' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType    
END   
   
END   
EXEC (@strSql)    
END  -- 存储过程结束    
--
----------------------------------------------    
GO    
 调用方法:

prcPageResult 
1,'*','TableName','','CreateDate',1,'PkID',25

 上面表示,查询表TableName的所有字段,前25条记录,因为是第一页,排序字段为CreateDate,降序排列,主键是PkID。

@tabName2 varchar(2000),                     --第二个子查询的表名------------(更改处:由于查询条件关系,从而使tabName是两个表,这样第二个子查询也会用上这两张表..导致错误..)

可将有条件查询的第二个Top查询里的tabName改成tabName2,,