欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sybase查询分页的有关问题

更新时间: 2014-01-05 02:21:43 责任编辑: Author_N1

 

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
现在一般的代码都是这样,你可以参考一下
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:21:43
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8914/
本文WWW.DOC100.NET DOC100.NET版权所有。