日期:2014-05-17  浏览次数:20397 次

微软Ado.net的分页存储过程是如何实现的?
网上虽然有很多的分页存储过程,但似乎解决不了以下两个问题:

1.对where 条件参数化(也就是不固定列参数化)

2.支持多表查询,比如select id,name from A union select id,name from B

不知道微软是怎么解决的啊?求高手指导下谢谢。


------解决方案--------------------
sql2005开始,有rownumber()函数,可以为查询结果生成序号,也就能分页了
sql2000只能靠top进行倒腾
ado.net可以在客户端废弃不用的记录再返回,怎么都可以
------解决方案--------------------
分页这个不一定要在数据库实现,WEB端在页面也可以用JS来实现,楼主多翻翻这些资料。

如果在数据库实现,真正通用的分页存储过程并非适用于楼主自己的需求,在查询显示的时候按照不同的功能查询写多个分页的存储过程,这对于性能及效率来说比较适合,至于楼主提到的where多个不定的条件及多表的分页,如果是按不同的功能查询写了其对应的分页存储过程,那么多表问题应该不存在了吧!怎么查询在写语句的时候就知道用到的表了,并不是不定的,应该是固定的。那么就剩一个where多条件的问题了,这个可以用动态查询来解决,关键是怎么去拼接where的条件,主要是里面对于字符串、时间等特殊字段特殊符号的处理,这个仔细注意下就可以解决。