本文内同概要:用存储过程实现数据表分页显示
此文仅是一种算法实现,希望有兴趣的朋友可以多提点算法。。
源代码:
create proc table1
@i int,--每页显示的个数
@j int,--显示的页码
@table varchar(20),--哪张表
@tabid varchar(20)--表的ID
as
declare @sql varchar(500) --声明一个局部变量,来存储字符串的值
set @sql='declare @k int '
set @sql=@sql+' set @k=(select count(*) from '+@table+')'
set @sql=@sql+'select top '+str(@i)+' * from
(select top(@k-('+str(@j)+'-1)*'+str(@i)+') * from '+@table+' order by'+@tabid+' Desc) a
--此处用的是拼接字符串的操作
order by a.'+@tabid+''
exec(@sql) --用exec结合字符串,将字符串装换成指令执行
--调用
exec table1 1,2,KC,Cid
//,第一个参数是每页显示多少行数据、
//第二个参数是显示的页码,
//第三个参数显示的是哪张表,
//第四个参数:要进行排序的字段名
--算法思路简单介绍:用top结合排序(先降序,再升序),用top抓取值来进行分页显示
--好处:每次我们只需传一些输入的 参数,就可以看到我们想要的数据。。利于代码的重用,不用每次都写存储过程
将操作进行封装,对于代码的重用有很大的意义。。。
在此希望各位博友用不同的算法,实现同样的效果(注意区别写的时候重点要放在在算法实现的那部分)
希望各位博友提供不同的算法。。。
当然上面的代码有很大的漏洞,例如我们传得数据超出了表中的数据 等等。。
所以我们传得时候小心一点,我们主要是探讨几种不同的算法,所以这些就不做太多的说明了。。