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

推荐订阅源

S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
P
Palo Alto Networks Blog
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale
S
Schneier on Security
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
雷峰网
雷峰网
T
Tenable Blog
人人都是产品经理
人人都是产品经理
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
AWS News Blog
AWS News Blog
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
Scott Helme
Scott Helme
SecWiki News
SecWiki News
C
CERT Recently Published Vulnerability Notes
Recorded Future
Recorded Future
I
InfoQ
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
Cloudbric
Cloudbric
C
Check Point Blog
Engineering at Meta
Engineering at Meta
TaoSecurity Blog
TaoSecurity Blog
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
腾讯CDC
量子位
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
Kaspersky official blog
Vercel News
Vercel News
F
Full Disclosure
T
Troy Hunt's Blog
Forbes - Security
Forbes - Security
S
Security @ Cisco Blogs

博客园 - 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,,