专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sybase

sybase查询分页的有关问题

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
sybase查询分页的问题
请教一个问题:
我有个一个查询用到union的,同时还有order   by排序
现在要改成分页查询
请问怎么做   ?我用sybase的是   15.2版本的。
谢谢!

------解决方案--------------------
你最好是写一个存储过程,用top可以很好的解决这个问题,你可以看一下我下面的代码。
create procedure pagination
@tblName varchar(255) --table name
@strGetFields varchar(1000) --return the fields
@fldName varchar(255) --sort of the field
@pageSize int
@pageIndex int
@doCount int --return the count of the note
@orderType int /*设置排序的类型,非0值降序*/
@strCond varchar(1500) /* 查询条件*/

as

declare @strSQL varchar(5000) --主要的SQL语句
declare @strTmp varchar(110) --临时变量
declare @strOrder varchar(400) --排序的类型

select @doCount = count(*) from info --get the count of the note

if @doCount != 0
begin
if @strCond != " "
set @strSQL = "select count(*) as Total from " + @tblName + "where " + @strCond
else
set @strSQL = "select count(*) as Total from " + @tblName + " "
end

else
begin
if @orderType != 0
begin
set @strTmp = "> (select min "
set @strOrder = "order by " + @fldName + " desc "
end
else
begin
set @strTmp = " <(select max "
set @strOrder = "order by " + @fldName + " asc "
end

if @pageIndex = 1
begin
if @strCond != " "
set @strSQL = "select top " + str(@pageSize) + " " + @strGetFields + "from " + @tblName + "where " + @strCond + " " + @strOrder
else
set @strSQL = "select top " + str(@pageSize) + " " + @strGetFields + "from " + @tblName + @strOrder
end

else

begin
set @strSQL = "select top " + str(@pageSize) + " " + @strGetFields + "from " + @tblName + "where " + @fldName + @strTmp + "( "+ @fldName + ") from (select top " + str((@pageIndex-1) * @pageSize) + " " + @fldName + "from " + @tblName + " " + @strOrder + ") as tblTmp) "+ @strOrder

if @strCond != " "

set @strSQL = "select top " + str(@pageSize) + " " + @strGetFields + "from " + @tblName + "where " + @fldName + " " + @strTmp + "( "+ @fldName + ") from (select top " + str((@pageIndex-1) * @pageSize) + " " + @fldName + "from " + @tblName + "where " + @strCond + " "+ @strOrder + ") as tblTmp) and " + @strCond + " " + @strOrder
end
end
exec(@strSQL)
go
现在一般的代码都是这样,你可以参考一下
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: