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

推荐订阅源

Jina AI
Jina AI
S
SegmentFault 最新的问题
D
DataBreaches.Net
H
Help Net Security
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
罗磊的独立博客
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)

博客园 - 几米天空

wp7版泡泡堂 共享XexDash源码 都是"框"字惹得祸 结合AspNetPager6.0无刷新分页,排序(dataGrid)--代码讲解一 我的数据库操作类EMESqlHelper AspNetPager6.0分页控件(针对ajax) 增强版 web的简单继承应用--页面的基类PageBase ASP.NET 调味品:AJAX js宝典学习笔记【转载】 - 几米天空 - 博客园 WEB应用程序中的进度条 Ajax.Net快速入门 .net打包自动安装数据库 AJAX基础教程 Google Suggest的简略分析 基于js的动态下拉菜单 http/1.1 500 server error错误的解决方法 Ajax程序设计入门 Ajax.net中与服务器控件的交互使用 Ajax程序设计入门
sql 分页存储过程
几米天空 · 2006-12-19 · via 博客园 - 几米天空

/*
 过程说明:对表按任意字段进行排序分页
 创建时间:2005年7月24日
 作者: chen gang
*/
CREATE PROCEDURE dbo.GetPagingRecord
    (
        @tablename varchar(100),--表名或视图表
        @fieldlist varchar(4000)='*',--欲选择字段列表
        @orderfield varchar(100),--排序字段
        @keyfield varchar(100),--主键
        @pageindex int,--页号,从1开始
        @pagesize int=20,--页尺寸
        @strwhere varchar(4000),--条件
        @ordertype varchar(1)='1'--排序,1,降序,0,升序
    )
AS

    SET NOCOUNT ON
    declare @sqlstr varchar(6000)
    declare @orderstr varchar(100)
    if(@keyfield=@orderfield)
    begin
 set @orderstr = ''
    end
    else
    begin
 set @orderstr = ','+@keyfield+' asc'
    end
    if @pageindex<=0
 set @pageindex=1
    --处理SQL中危险字符,并且将条件处理成易嵌入的形式
    set @strwhere=replace(@strwhere,'''','''''')
    set @strwhere=replace(@strwhere,'--','')
    set @strwhere=replace(@strwhere,';','')
    set @sqlstr='declare @CurPageNum int;'
    set @sqlstr=@sqlstr+'declare @nextpagenum int;'
    set @sqlstr=@sqlstr+'set @curpagenum='+cast(@PageIndex-1 as varchar)+'*'+cast(@Pagesize as varchar)+';'
    set @sqlstr=@sqlstr+'set @nextpagenum='+cast(@PageIndex as varchar)+'*'+cast(@Pagesize as varchar)+';'
    set @sqlstr=@sqlstr+'declare @sqlstr varchar(6000);'
    if @ordertype='1'
    begin
    set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from 
 
'+@tablename+'  where 1=1 '+@strwhere+' order by '+@orderfield+' desc' + @orderstr+') as a where 1=1 and '+@keyfield+' not in ( 
 
select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where 1=1 '+@strwhere+' 
 
order by '+@orderfield +' desc'+ @orderstr +') order by ' + @orderfield +' desc'';'
    end
    else
    begin
    set @sqlstr=@sqlstr+'set @sqlstr=''select '+@fieldlist+' from ( select top ''+cast(@nextpagenum as varchar)+'' * from 
 
'+@tablename+'  where 1=1 '+@strwhere+' order by '+@orderfield+' asc' + @orderstr+' ) as a where 1=1 and '+@keyfield+' not in ( 
 
select top ''+cast(@curpagenum as varchar)+'' '+@keyfield+' from '+@tablename+' where 1=1 '+@strwhere+' 
 
order by '+@orderfield +' asc' + @orderstr+') order by '+@orderfield +' asc'';'
    end
    set @sqlstr=@sqlstr+'execute( @sqlstr)'
    print @sqlstr
execute(@sqlstr)
GO