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
现在一般的代码都是这样,你可以参考一下
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
unix 下操作sybase 问题.各位大虾不吝赐教
在hp-ux下通过shell连接数据库.
通过一个查询语句如下:
select count(*) ct from t1
un...
-
询问关于sybase advantage的字体对齐问题。
Windows 下的 Sybase SQL Advantage
文件版本 11.5.1.3
在返回信息窗口,只有宋体字...
-
数据导入问题
linux 下将每天将最新生成的文件导入到sybase anywhere 11数据库
如何实现????
------解决方案--------------------
...
-
Sybase [ASE]版发贴提问的智慧和技巧
发贴时,标题包含数据库名称操作系统以及相应版本号,
e.g. Windows XP下ASE15.0.3安装出错
...
-
求sybase15for x86
那位大侠有给传一个
------解决方案--------------------
正传给你QQ.......
-
请问sysbase中 sp_extendsegment 和 alterbase 有什么不同?
我知道sp_extendsegment 是将某个段扩到设备上,但是alterdabse不也有这...
-
求帮忙将一个sybase里的数据导入sqlite和SqlServer
有一个很老的管理系统好像是用pb+sybase asa7 做的,目前仍在用,
现在要升级新的...
-
有没有电话面试时候数据库的面试题目可以参考的啊?
有没有电话面试时候数据库的面试题目可以参考的啊?
------解决方案---------...
-
sybase master服务启动时发生段错误怎么办?
下面是errlog:
Directory is not a suitable Sybase directory.
Building Adaptiv...
-
sybase的int型数字时间,如何转换?
sybase有一字段存储的是时间,但为INT型,如值为1265856544,即2010-02-11 10:49:04
在SYBASE的SQL中,...