2016-03-25 14 views
0

Kullanıcının bilgi araması yapmasına ve bir kılavuz oluşturmasına izin veren bir arama ekranım var. Bazı arama sonuçlarında çok miktarda veri döndürülüyor. Bir çağrı ızgarası oluşturmaya çalışıyorum, böylece bir seferde yalnızca 10 veya 20 nolu mağaza prosedürünü getiriyorum. Böyle bir şey yapmaya çalışıyorumsybase ASE içindeki belirli bir aralıktaki sonuçları sınırlandırma

(Zaten arayüzünde bir çağrı ızgara var):

select * from wl_eval limit 1, 20 

sorgu yukarıda sadece ilk 20 kayıtları döndürür. Sybase ASE'de bunu nasıl başarabilirim? Ne yazık ki, müşteri projem için Sybase kullanıyoruz. Diğer veritabanı motorlarında yukarıda bahsettiğim sorguyu kullanabileceğimizi biliyorum. Ayrıca, SET ROW COUNT 20'u kullanabileceğimizi de biliyorum, ancak 30 ila 50 arasında belirli bir aralık istiyorsanız bu işe yaramaz.

Herhangi bir düşünce?

cevap

0

benim için çalışmıyor) Eğer

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 
+0

ROW_NUMBER (dönmek istiyorum TOP numberofrecords ekle – Erick

0
SELECT TOP 20 <column list> 
FROM YourTable 
ORDER BY <list>