CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

求分页存储过程

楼主doitnow2000(大海)2005-06-02 21:48:11 在 .NET技术 / ASP.NET 提问

我现在有一个大型数据库,有500千万条记录,我要对其进行分页,只希望每次取500条出来。请高手帮忙,分页存储过程!谢谢! 问题点数:20、回复次数:18Top

1 楼fancyf(凡瑞)回复于 2005-06-02 21:54:01 得分 0

http://community.csdn.net/Expert/TopicView.asp?id=3662163Top

2 楼y7967(三千)回复于 2005-06-02 22:00:20 得分 0

upTop

3 楼huangguolinc(来了)回复于 2005-06-03 12:44:36 得分 10

------------------------------------------------------------------------------------  
  -----大量数据的分页  
  ------------------------------------------------------------------------------------  
  --查询  
  if   exists   (select   name   from   sysobjects   where   name='ResultRows'   and   type='p')  
  drop   procedure   ResultRows  
  go  
   
  CREATE   PROCEDURE   ResultRows  
  (  
    @SQLString   nVARCHAR(4000),  
    @PageCount   int,  
    @ColumnID   VARCHAR(255),  
    @ColumnSort   VARCHAR(255)  
  )  
  AS  
   
  DECLARE   @Str   nVARCHAR(4000)  
   
  SET   @Str='SELECT   TOP   20   *   FROM   ('+@SQLString+')   T   WHERE   T.'+@ColumnID+'   NOT   IN    
  (SELECT       TOP   '+CAST((20*(@PageCount-1))   AS   VARCHAR(20))+'   '+@ColumnID+'   FROM   ('+@SQLString+')   T9   ORDER   BY   '+@ColumnSort+'   desc)   ORDER   BY   '+@ColumnSort+'   desc'  
   
  --PRINT   @Str  
   
  EXEC   sp_ExecuteSql   @Str  
  GO  
   
   
  在其他存储过程中调用  
  --单据列表  
  if   exists   (select   name   from   sysobjects   where   name='SaleBillList'   and   type='p')  
  drop   procedure   SaleBillList  
  go  
   
  create   procedure   SaleBillList  
  @SaleBargainClient   varchar(255),  
  @SaleFinishDepartment   varchar(255),  
  @SaleFinishPort   varchar(255),  
  @SaleFinishShipName   varchar(255),  
  @PageCount   varchar(20)  
  with   encryption  
  as  
  declare   @SqlString   varchar(4000)  
   
  set   @SqlString='select   *   from   SaleBill,SaleFinish,SalePerform,SaleBargain   where   SaleBillFinishID=SaleFinishID   and   SaleFinishPerformID=SalePerformID   and   SalePerformBargainID=SaleBargainID'  
   
  if(@SaleBargainClient<>'')set   @SqlString=@SqlString+'   and   SaleBargainClient   like   '+'''%'+@SaleBargainClient+'%'''  
  if(@SaleFinishDepartment<>'')set   @SqlString=@SqlString+'   and   SaleFinishDepartment='+''''+@SaleFinishDepartment+''''  
  if(@SaleFinishPort<>'')set   @SqlString=@SqlString+'   and   SaleFinishPort   like   '+'''%'+@SaleFinishPort+'%'''  
  if(@SaleFinishShipName<>'')set   @SqlString=@SqlString+'   and   SaleFinishShipName   like   '+'''%'+@SaleFinishShipName+'%'''  
   
   
  exec   ResultRows   @SqlString,@PageCount,'SaleBillID','SaleBillID'  
  go  
  Top

4 楼minghui000(沉迷网络游戏)回复于 2005-06-03 13:02:46 得分 0

帮您顶一下Top

5 楼doitnow2000(大海)回复于 2005-06-04 12:05:36 得分 0

有没有Oracle的存储过程。帮忙一下,谢谢!Top

6 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-04 12:31:31 得分 0

每一页500条也太多了吧!Top

7 楼doitnow2000(大海)回复于 2005-06-04 16:07:58 得分 0

实在没有办法呀,只能这样子了,数据量太大了。  
  但是在该页我可以提供查询。  
   
  求Oracle存储过程。  
  Top

8 楼itflying(it学习者 )回复于 2005-06-04 16:34:43 得分 10

create     procedure   XiaoZhengGe  
  @sqlstr   nvarchar(4000),   --查询字符串  
  @currentpage   int,--第N页  
  @pagesize   int--每页行数  
  as  
  set   nocount   on  
  declare   @P1   int,--P1是游标的id  
  @rowcount   int  
  exec   sp_cursoropen   @P1   output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount   output  
  select   ceiling(1.0*@rowcount/@pagesize)   as   总页数--,@rowcount   as   总行数,@currentpage   as   当前页  
  set   @currentpage=(@currentpage-1)*@pagesize+1  
  exec   sp_cursorfetch   @P1,16,@currentpage,@pagesize    
  exec   sp_cursorclose   @P1  
  set   nocount   off  
  Top

9 楼wjjdnajj(色空)回复于 2005-06-04 16:39:43 得分 0

路过看看热闹Top

10 楼LaoDai_Net(『老代』)回复于 2005-06-04 16:42:48 得分 0

可以去   webdiyer   的主页上去   有个存储过程工具   自动生成分页存储过程  
   
  http://www.webdiyer.com/utility/procgen.aspxTop

11 楼renyu732(Sysinfo)回复于 2005-06-04 16:44:00 得分 0

为什么不考虑本版斑竹陕北吴旗娃的分页控件呢?  
  http://www.webdiyer.comTop

12 楼renyu732(Sysinfo)回复于 2005-06-04 16:45:16 得分 0

哦。。  
   
  呵呵  
  有人在我之前介绍过了Top

13 楼njbaige(白鸽)回复于 2005-06-04 17:12:32 得分 0

http://community.csdn.net/Expert/topic/3292/3292678.xml?temp=.1955835Top

14 楼doitnow2000(大海)回复于 2005-06-04 17:18:46 得分 0

看了,只是想写,看看大家的意见。Top

15 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2005-06-04 17:54:44 得分 0

分页的原理  
   
   
  declare   @SQLStr   varchar(8000)  
  set   @SQLStr='SELECT   Top   '+cast(@每页大小   as   varchar)+'   *   FROM   表   WHERE   主键列   NOT   IN   (SELECT   TOP   '+cast(@每页大小*@第几页   as   varchar)+'   主键列   from   表   )'  
  exec(@SQLStr)Top

16 楼minghui000(沉迷网络游戏)回复于 2005-06-05 01:30:54 得分 0

帮您顶一下Top

17 楼doitnow2000(大海)回复于 2005-06-06 19:09:15 得分 0

TO  
    superdullwolf(超级大笨狼,每天要自强)    
  如果访问者要到最后一页,那速度就非常慢,可想一个500千万条记录。会等死人的。Top

18 楼doitnow2000(大海)回复于 2005-06-06 19:10:21 得分 0

求Oracle存储过程。Top

相关问题

  • help:分页存储过程。。。。。。。。。
  • 分页存储过程
  • 高分找分页的存储过程?
  • 老问题,存储过程分页
  • 分页存储过程~求解~
  • 分页存储过程请教
  • 高分求ORCALE 分页存储过程
  • 怎样调用分页存储过程?
  • DataGrid利用存储过程分页!
  • 关于存储过程分页!

关键词

  • .net
  • 存储过程
  • 查询
  • top
  • 分页
  • sqlstring
  • columnsort
  • resultrows
  • salefinishdepartment
  • salefinishshipname

得分解答快速导航

  • 帖主:doitnow2000
  • huangguolinc
  • itflying

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo