将 sybase ASE 中的结果限制在特定范围之间

limiting results in sybase ASE between a particular range

我有一个搜索屏幕,它允许用户搜索信息并填充一个网格。一些搜索结果 return 包含大量数据。我正在尝试创建一个分页网格,这样我一次只能从存储过程中获取 10 或 20 个结果。 (我已经在 UI 中设置了分页网格)

我正在尝试做这样的事情:

select * from wl_eval limit 1, 20

上面的查询将 return 仅前 20 条记录。我怎样才能在 Sybase ASE 中完成它?不幸的是,对于我的客户项目,我们使用的是 Sybase。我知道在其他数据库引擎中我们可以使用我上面提到的查询。我也知道我们可以使用 SET ROW COUNT 20 但如果我想要一个特定的范围,比如从 30 到 50,这将不起作用。

有什么想法吗?

添加您想要的 TOP 记录数 return

DECLARE @intStartRow int;
DECLARE @intEndRow int;

SET @intStartRow = (@intPage -1) * @intPageSize + 1;
SET @intEndRow = @intPage * @intPageSize;    

 WITH wl_eval AS
(SELECT field, 
 ROW_NUMBER() OVER(ORDER BY intID DESC) as intRow, 
 COUNT(intID) OVER() AS intTotalHits 
     FROM tblBlog)
 SELECT field, intTotalHits FROM wl
 WHERE intRow BETWEEN @intStartRow AND @intEndRow
SELECT TOP 20 <column list> 
FROM YourTable 
ORDER BY <list>