壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1694|回复: 1

sql分页查询

[复制链接]
发表于 2008/9/18 14:20:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
SQL code /* QQ312430633 创建日期:2008-06-25 */
--修改了ORDER BY 需要 percent 与 ORDERBY 失效的BUG-----注意'roder by'用一个空格间隔

Create
PROCEDURE
[dbo].[les_AllowPaging]
@pageindex
int,    ----*****页码
@PageSize
int,     ----*****每页显示条数
@tsql
varchar(4000)----*****SQL语句
as
Declare
@SqlSelect
varchar(4000)Declare
@orderby
varchar(4000)Declare
@AllowPagingSql
varchar(4000) ---判断是否排序
if
CHARINDEX('order by',@tsql) <>
0
begin
set
@SqlSelect=replace(substring (@tsql,1, CHARINDEX('order by',@tsql)-1),'$','''')      set
@orderby=replace(substring (@tsql, CHARINDEX('order by',@tsql),len(@tsql) ),'$','''')          set
@AllowPagingSql=
'select * from (SELECT  ROW_NUMBER() OVER('+@orderby+') AS AllowPagingId,* FROM ('+
@SqlSelect
+') as table1) as table2 where AllowPagingId between '
+convert(varchar(10),((@pageindex-1) *
@PageSize+1))+' and '
+convert(varchar(10), @pageindex
*
@PageSize)             exec  (@AllowPagingSql)end
else
begin
set
@SqlSelect=replace(@tsql,'$','''')      set
@orderby=''
set
@AllowPagingSql=
'select *  from (SELECT  *,ROW_NUMBER() OVER(ORDER BY orderbyID DESC) AS AllowPagingId FROM  ( select *, 1 as orderbyID from ( '
+@SqlSelect
+' )  as  tbs1 )   as Tabl1 ) as table2 where AllowPagingId between '
+convert(varchar(10),((@pageindex-1) *
@PageSize+1))+' and '
+convert(varchar(10), @pageindex
*
@PageSize)                 exec  (@AllowPagingSql)end
set
@AllowPagingSql='select case      when count(*)%'+convert(varchar(10),@PageSize)+'=0 then count(*)/'+convert(varchar(10),@PageSize)+'     when count(*)%'+convert(varchar(10),@PageSize)+'<>0 then count(*)/'+convert(varchar(10),@PageSize)+'+1end as pageCount,count(*) as RowsCount from ('+@SqlSelect+') as tab1'
exec  (@AllowPagingSql)
发表于 2009/2/9 08:43:14 | 显示全部楼层
学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 08:04 , Processed in 0.015006 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表