查看: 11701|回复: 2

【编程】sql server动态存储分页

[复制链接]
  • TA的每日心情
    郁闷
    2016-10-26 00:00
  • 签到天数: 63 天

    [LV.6]常住居民II

    发表于 2013-11-6 21:30:38 | 显示全部楼层 |阅读模式
    题外话:这文章很少见,注意我说的是内容不与网上的相同,网上关于存储过程分页一找一大堆,但是我的这个真的是自己写出来,当然不是我创造出来,本来就有这种函数,但是这种思想不错,资料来源于英文网站。

    文章我发表过一次,有人转载过一次,我就看到过在网上出现两次,但是这两个网站好像现在打不开,我觉得这文章拿出来分享。

    这里主要是sql server 数据库

    [SQL] 纯文本查看 复制代码
    --这里建一个执行我们想要数据总的结果查询sql语句存储过程
    if object_id(N'PageSQL') is not null
    	drop proc PageSQL
    go
    create proc PageSQL
    (
    	@sqlstr nvarchar(100)
    )
    as
    begin 
    	exec sp_executesql @sqlstr
    end
    go
    --这里再建一个把我们执行结果后的数据进行分页的存储过程
    if object_id(N'Page') is not null
    	drop proc Page
    go
    create proc Page
    (
    	@pagesize int,--页面大小
    	@pagenum int,--页码
    	@filed varchar(20)--列名
    )
    as
    begin
    	Exec sp_serveroption 'lenovo-d35fdba5','Data Access',True  --这句是设置sql server 也可以在下面设置
    	declare @sql nvarchar(200)
    	declare @num int
    	set @num=(@pagesize*(@pagenum-1))
    	set @sql='select top '+Convert(nvarchar(10),@pagesize)+' * from #T where ('+@filed+' not in (select top'+Convert(nvarchar(10),@num)+' '+@filed+' from #T order by '+@filed+'))order by '+@filed
    	exec sp_executesql @sql
    end
    go
    
    --Exec sp_serveroption 'lenovo-d35fdba5','Data Access',True
    Select *  INTO #T From OpenQuery([lenovo-d35fdba5],'QTFLW.dbo.PageSQL''select * from T_UserInfo''') --这里面就是我们想要执行的sql语句,当然多表也是可以的(我主要是执行我们任何的sql语句),为什么网上有那么多,不去用,原因就是当有多表时,就会出现问题。这里技术要点也就是这个OpenQuery函数。
    
    exec Page 2,3,'UserName'  --这里执行第二个存储过程,就能对我们的结果进行想要的分页.
    


    思路:就是把sql语句执行的结果先放入一个临时表,再对临时表进行分页...按正常思路写出语句是没有用的,。。大家可以去试试~~所以才说这个在网上真的很难找到。
    回复

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2013-11-7 03:30:37 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-10-26 00:00
  • 签到天数: 63 天

    [LV.6]常住居民II

     楼主| 发表于 2013-11-7 07:44:42 | 显示全部楼层
    a88166666 发表于 2013-11-7 03:30
    不懂怎么办

    那我也没办法
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-22 21:33 , Processed in 0.043588 second(s), 19 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部