как разбить на страницы ResultSet
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
Вот столкнулся с проблемой - не знаю как разбить ResultSet на страницы
CallableStatement stm = conn.prepareCall();
ResultSet rs = stm.executeQuery("{call usp_someProcName}");
а вот потом как тот ResultSet разбить на страницы допустим по 10 записей.
в ASP для этого есть Recordset.Pagesize и Recordset.ActivePage, а что на джаве делать?
CallableStatement stm = conn.prepareCall();
ResultSet rs = stm.executeQuery("{call usp_someProcName}");
а вот потом как тот ResultSet разбить на страницы допустим по 10 записей.
в ASP для этого есть Recordset.Pagesize и Recordset.ActivePage, а что на джаве делать?
-
- Уже с Приветом
- Posts: 2915
- Joined: 07 Mar 2001 10:01
- Location: Tar Heel State
как разбить на страницы ResultSet
Vyvodit' po 10 zapisej za raz?
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
Ну да, тоесть в базе может быть 10000 записей но их же сразу не выведешь все на экран. Нужно делать разбивку на страницы. Но вот как?
-
- Уже с Приветом
- Posts: 460
- Joined: 22 Dec 1999 10:01
- Location: san jose, ca
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>Ну да, тоесть в базе может быть 10000 записей но их же сразу не выведешь все на экран. Нужно делать разбивку на страницы. Но вот как?</strong><hr></blockquote>
запихай все во временную таблицу. то есть не все, а пары (id1,id2), id1 - identity, id2 - идентификатор записи из исходной таблицы.
а потом при выводе по параметру from (или start [img:b364ebad45]images/smiles/icon_wink.gif[/img:b364ebad45] ) выбирать из этой временной таблицы where id1>=@start and id1<=@start+@items_per_page
а убивать таблицу временную можно в session_onEnd
<strong>Ну да, тоесть в базе может быть 10000 записей но их же сразу не выведешь все на экран. Нужно делать разбивку на страницы. Но вот как?</strong><hr></blockquote>
запихай все во временную таблицу. то есть не все, а пары (id1,id2), id1 - identity, id2 - идентификатор записи из исходной таблицы.
а потом при выводе по параметру from (или start [img:b364ebad45]images/smiles/icon_wink.gif[/img:b364ebad45] ) выбирать из этой временной таблицы where id1>=@start and id1<=@start+@items_per_page
а убивать таблицу временную можно в session_onEnd
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
А еще как ни то можно?
-
- Ник закрыт как дубликат.
- Posts: 6238
- Joined: 14 Mar 2001 10:01
- Location: .MD -> .SI -> .SE -> .AR.US -> .MD
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>А еще как ни то можно?</strong><hr></blockquote>
Я не спец в JSP, но способ приведенный выше рекомендуется использовать и при работе с ASP.
Так как RS.AbsolutePage и т.д. сгружают все записи и уже на клиенте делают разбивку по страницам.
<strong>А еще как ни то можно?</strong><hr></blockquote>
Я не спец в JSP, но способ приведенный выше рекомендуется использовать и при работе с ASP.
Так как RS.AbsolutePage и т.д. сгружают все записи и уже на клиенте делают разбивку по страницам.
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
да, но если я делаю временную таблицу для сессии то тогда информация там будет не связана с основной таблицей и изменения сделанные в основной таблице не будут видны.
или я что то не так понял?
или я что то не так понял?
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
как разбить на страницы ResultSet
Еще можно совсем тупо пробежаться по всему ResultSet-у.
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
for( int i=0; i<=startRec+pageSize && rs.next(); i++ )
{
if ( i>startRec && i<=startRec+pageSize )
doSomething();
}
</pre><hr></blockquote>
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
for( int i=0; i<=startRec+pageSize && rs.next(); i++ )
{
if ( i>startRec && i<=startRec+pageSize )
doSomething();
}
</pre><hr></blockquote>
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by KVA:
<strong>Еще можно совсем тупо пробежаться по всему ResultSet-у.
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
for( int i=0; i<=startRec+pageSize && rs.next(); i++ )
{
if ( i>startRec && i<=startRec+pageSize )
doSomething();
}
</pre><hr></blockquote></strong><hr></blockquote>
ну это то не фокус [img:0e588426bf]images/smiles/icon_smile.gif[/img:0e588426bf]
а если он здоровый?
<strong>Еще можно совсем тупо пробежаться по всему ResultSet-у.
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
for( int i=0; i<=startRec+pageSize && rs.next(); i++ )
{
if ( i>startRec && i<=startRec+pageSize )
doSomething();
}
</pre><hr></blockquote></strong><hr></blockquote>
ну это то не фокус [img:0e588426bf]images/smiles/icon_smile.gif[/img:0e588426bf]
а если он здоровый?
-
- Уже с Приветом
- Posts: 1731
- Joined: 24 Sep 1999 09:01
- Location: планета Земля
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>Вот столкнулся с проблемой - не знаю как разбить ResultSet на страницы
CallableStatement stm = conn.prepareCall();
ResultSet rs = stm.executeQuery("{call usp_someProcName}");
а вот потом как тот ResultSet разбить на страницы допустим по 10 записей.
в ASP для этого есть Recordset.Pagesize и Recordset.ActivePage, а что на джаве делать?</strong><hr></blockquote>
Саш, а там(что там в JSP с бд то работает?) нет такого метода как Move()? А то если есть то разбивку на страницы можно сделать и без ADODB-вских PageSize и AbsolutePage.
Кстати, а что ADO нельзя в JSP использовать?
<strong>Вот столкнулся с проблемой - не знаю как разбить ResultSet на страницы
CallableStatement stm = conn.prepareCall();
ResultSet rs = stm.executeQuery("{call usp_someProcName}");
а вот потом как тот ResultSet разбить на страницы допустим по 10 записей.
в ASP для этого есть Recordset.Pagesize и Recordset.ActivePage, а что на джаве делать?</strong><hr></blockquote>
Саш, а там(что там в JSP с бд то работает?) нет такого метода как Move()? А то если есть то разбивку на страницы можно сделать и без ADODB-вских PageSize и AbsolutePage.
Кстати, а что ADO нельзя в JSP использовать?
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
ну какой там ADO на Unix ? [img:3cfdb81410]images/smiles/icon_smile.gif[/img:3cfdb81410]
метод такой есть - next() по моему называется
и как с ним?
p.s. Миш, если есть телефончик пришли - я в конце декабря в Москве буду - могли бы вместе пивка попить [img:3cfdb81410]images/smiles/icon_smile.gif[/img:3cfdb81410]
метод такой есть - next() по моему называется
и как с ним?
p.s. Миш, если есть телефончик пришли - я в конце декабря в Москве буду - могли бы вместе пивка попить [img:3cfdb81410]images/smiles/icon_smile.gif[/img:3cfdb81410]
-
- Уже с Приветом
- Posts: 3127
- Joined: 10 Apr 2001 09:01
- Location: MD
как разбить на страницы ResultSet
it's the notorious problem [img:ccbf2db168]images/smiles/icon_smile.gif[/img:ccbf2db168]
the simplest way with Oracle is to make a view with one of the columns is rownum.
e.g.
create table T (
C varchar2(2)
);
create or replace view V as
select C, ROWNUM row from T;
so, you can do this:
select C from V where row between 1000 and 1025;
In SQL server this won't work, because SQL server sucks [img:ccbf2db168]images/smiles/icon_smile.gif[/img:ccbf2db168] Just kidding, you may use the same idea in SQL server too
the simplest way with Oracle is to make a view with one of the columns is rownum.
e.g.
create table T (
C varchar2(2)
);
create or replace view V as
select C, ROWNUM row from T;
so, you can do this:
select C from V where row between 1000 and 1025;
In SQL server this won't work, because SQL server sucks [img:ccbf2db168]images/smiles/icon_smile.gif[/img:ccbf2db168] Just kidding, you may use the same idea in SQL server too
-
- Уже с Приветом
- Posts: 1731
- Joined: 24 Sep 1999 09:01
- Location: планета Земля
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>ну какой там ADO на Unix ? [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
</strong><hr></blockquote>
Кто же знал что ты на Unix мигрировал [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[b:fb1b0321b7]
метод такой есть - next() по моему называется
и как с ним?
[/b:fb1b0321b7]
Неа, next судя по названию, аналог MoveNext в ADO. А Move позволяет сразу прыгнуть на номер записи, которую ты ему передаешь через параметр, т.е. Rs.Move(10)
На ASP будет что нибудь типа этого:
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
<%
.....
Rs.Move(pageNumb*pageSize)
For n=1 To pageSize
If RS.EOF Then
Exit For
Else
'выводим то что надо
Rs.MoveNext
End If
Next
%>
</pre><hr></blockquote>
[b:fb1b0321b7]
p.s. Миш, если есть телефончик пришли - я в конце декабря в Москве буду - могли бы вместе пивка попить [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[/b:fb1b0321b7]
Выслал мобильный и рабочий [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[ 13-11-2001: Message edited by: stockman ]</p>
<strong>ну какой там ADO на Unix ? [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
</strong><hr></blockquote>
Кто же знал что ты на Unix мигрировал [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[b:fb1b0321b7]
метод такой есть - next() по моему называется
и как с ним?
[/b:fb1b0321b7]
Неа, next судя по названию, аналог MoveNext в ADO. А Move позволяет сразу прыгнуть на номер записи, которую ты ему передаешь через параметр, т.е. Rs.Move(10)
На ASP будет что нибудь типа этого:
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">code:</font><hr><pre>
<%
.....
Rs.Move(pageNumb*pageSize)
For n=1 To pageSize
If RS.EOF Then
Exit For
Else
'выводим то что надо
Rs.MoveNext
End If
Next
%>
</pre><hr></blockquote>
[b:fb1b0321b7]
p.s. Миш, если есть телефончик пришли - я в конце декабря в Москве буду - могли бы вместе пивка попить [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[/b:fb1b0321b7]
Выслал мобильный и рабочий [img:fb1b0321b7]images/smiles/icon_smile.gif[/img:fb1b0321b7]
[ 13-11-2001: Message edited by: stockman ]</p>
-
- Уже с Приветом
- Posts: 1731
- Joined: 24 Sep 1999 09:01
- Location: планета Земля
как разбить на страницы ResultSet
Соори, там дописать надо:
[i:0c68e69aff]
If RS.EOF [b:0c68e69aff]OR Rs.BOF[/b:0c68e69aff] Then
Exit For
Else
[/i:0c68e69aff]
ну и еще пару проверочек, но примечательно что такой постраничный вывод должен работать на любом курсоре.
[i:0c68e69aff]
If RS.EOF [b:0c68e69aff]OR Rs.BOF[/b:0c68e69aff] Then
Exit For
Else
[/i:0c68e69aff]
ну и еще пару проверочек, но примечательно что такой постраничный вывод должен работать на любом курсоре.
-
- Уже с Приветом
- Posts: 478
- Joined: 17 Nov 1999 10:01
как разбить на страницы ResultSet
А какой JDBC driver - 1 или 2? Если 2.1 то там есть scrollable result sets
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
Позиция курсора
ResultSet rst ..
rst.absolute(int row)
http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
Позиция курсора
ResultSet rst ..
rst.absolute(int row)
http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by jamm:
<strong>А какой JDBC driver - 1 или 2? Если 2.1 то там есть scrollable result sets</strong><hr></blockquote>
Есть то он есть, но Oracle-авский CURSOR возвращаемый из stored procedure не скролируется. Feature by design или у меня руки кривые?
<strong>А какой JDBC driver - 1 или 2? Если 2.1 то там есть scrollable result sets</strong><hr></blockquote>
Есть то он есть, но Oracle-авский CURSOR возвращаемый из stored procedure не скролируется. Feature by design или у меня руки кривые?
-
- Уже с Приветом
- Posts: 2049
- Joined: 12 Jul 2000 09:01
- Location: Madison, Wisconsin USA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by KVA:
<strong>
Есть то он есть, но Oracle-авский CURSOR возвращаемый из stored procedure не скролируется. Feature by design или у меня руки кривые?</strong><hr></blockquote>
в ADO кстати тоже есть проблемы со скролингом в рекордсете когда его из хранимрой процедуры получаешь.
но там можно сказать что локейшен - на клиенте и тогда это все работает. а вот как в джаве то все сделать?
ну не читать же это все в массив каждый раз и рабивать уже потом ?
<strong>
Есть то он есть, но Oracle-авский CURSOR возвращаемый из stored procedure не скролируется. Feature by design или у меня руки кривые?</strong><hr></blockquote>
в ADO кстати тоже есть проблемы со скролингом в рекордсете когда его из хранимрой процедуры получаешь.
но там можно сказать что локейшен - на клиенте и тогда это все работает. а вот как в джаве то все сделать?
ну не читать же это все в массив каждый раз и рабивать уже потом ?
-
- Уже с Приветом
- Posts: 460
- Joined: 22 Dec 1999 10:01
- Location: san jose, ca
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>да, но если я делаю временную таблицу для сессии то тогда информация там будет не связана с основной таблицей и изменения сделанные в основной таблице не будут видны.
или я что то не так понял?</strong><hr></blockquote>
ну тогда не временная таблица, а view подойдет больше...
[ 13-11-2001: Message edited by: dimach ]</p>
<strong>да, но если я делаю временную таблицу для сессии то тогда информация там будет не связана с основной таблицей и изменения сделанные в основной таблице не будут видны.
или я что то не так понял?</strong><hr></blockquote>
ну тогда не временная таблица, а view подойдет больше...
[ 13-11-2001: Message edited by: dimach ]</p>
-
- Уже с Приветом
- Posts: 5347
- Joined: 03 Feb 1999 10:01
- Location: NJ, USA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by dimach:
<strong>ну тогда не временная таблица, а view подойдет больше...</strong><hr></blockquote>
А если у меня выводится 6 полей таблицы да еще надо сортировать по каждому полю и порядке вознастания-убывания? У меня на пару секунд Oracle задумывается. И это без нагрузки (только я один). Так что я пока загрузил все данные себе на сервер и оттуда уже их отдаю. Благо у меня эти данные более-менее статичные и можно их обновлять где-то раз в час.
<strong>ну тогда не временная таблица, а view подойдет больше...</strong><hr></blockquote>
А если у меня выводится 6 полей таблицы да еще надо сортировать по каждому полю и порядке вознастания-убывания? У меня на пару секунд Oracle задумывается. И это без нагрузки (только я один). Так что я пока загрузил все данные себе на сервер и оттуда уже их отдаю. Благо у меня эти данные более-менее статичные и можно их обновлять где-то раз в час.
-
- Уже с Приветом
- Posts: 460
- Joined: 22 Dec 1999 10:01
- Location: san jose, ca
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by KVA:
<strong>
А если у меня выводится 6 полей таблицы да еще надо сортировать по каждому полю и порядке вознастания-убывания? У меня на пару секунд Oracle задумывается. И это без нагрузки (только я один). Так что я пока загрузил все данные себе на сервер и оттуда уже их отдаю. Благо у меня эти данные более-менее статичные и можно их обновлять где-то раз в час.</strong><hr></blockquote>
12 views [img:1cce95d593]images/smiles/icon_wink.gif[/img:1cce95d593]
<strong>
А если у меня выводится 6 полей таблицы да еще надо сортировать по каждому полю и порядке вознастания-убывания? У меня на пару секунд Oracle задумывается. И это без нагрузки (только я один). Так что я пока загрузил все данные себе на сервер и оттуда уже их отдаю. Благо у меня эти данные более-менее статичные и можно их обновлять где-то раз в час.</strong><hr></blockquote>
12 views [img:1cce95d593]images/smiles/icon_wink.gif[/img:1cce95d593]
-
- Уже с Приветом
- Posts: 3127
- Joined: 10 Apr 2001 09:01
- Location: MD
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by dimach:
<strong>
ну тогда не временная таблица, а view подойдет больше...
[ 13-11-2001: Message edited by: dimach ]</strong><hr></blockquote>
now tell him how to make a view with oracle-like rownum in SQL Server. he doesn't know [img:d2e8e32768]images/smiles/icon_smile.gif[/img:d2e8e32768]
<strong>
ну тогда не временная таблица, а view подойдет больше...
[ 13-11-2001: Message edited by: dimach ]</strong><hr></blockquote>
now tell him how to make a view with oracle-like rownum in SQL Server. he doesn't know [img:d2e8e32768]images/smiles/icon_smile.gif[/img:d2e8e32768]
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by webdeveloper:
<strong>Так, что, в итоге нет способа разбить ResulSet на старницы в базе данных когда используется хранимаю процедура?
Или есть?
Варианты с созданием дополнительных таблиц не предлогать [img:9f616cfe15]images/smiles/icon_smile.gif[/img:9f616cfe15] </strong><hr></blockquote>Вне зависимости от источника данных можно сделать соответсвюущий XML data island и привязять его к HTML таблице, при этом можно указать атрибут DATAPAGESIZE в количестве строк, после чего можно делать постраничную навигацию по таблице на клиенте. Это самое простое и элегантное решение для не очень больших наборов данных из тех, что я знаю. Хотя честно говоря я не слишком много в этой области знаю [img:9f616cfe15]images/smiles/icon_razz.gif[/img:9f616cfe15]
<strong>Так, что, в итоге нет способа разбить ResulSet на старницы в базе данных когда используется хранимаю процедура?
Или есть?
Варианты с созданием дополнительных таблиц не предлогать [img:9f616cfe15]images/smiles/icon_smile.gif[/img:9f616cfe15] </strong><hr></blockquote>Вне зависимости от источника данных можно сделать соответсвюущий XML data island и привязять его к HTML таблице, при этом можно указать атрибут DATAPAGESIZE в количестве строк, после чего можно делать постраничную навигацию по таблице на клиенте. Это самое простое и элегантное решение для не очень больших наборов данных из тех, что я знаю. Хотя честно говоря я не слишком много в этой области знаю [img:9f616cfe15]images/smiles/icon_razz.gif[/img:9f616cfe15]
-
- Уже с Приветом
- Posts: 1772
- Joined: 06 Sep 2001 09:01
- Location: Boston, MA -> Charlotte,NC ->Danbury,CT
как разбить на страницы ResultSet
Чудес не бывает. Либо всю выборку тянете на клиент в разных видах - recordset на клиенте если ADO, или, например, в JavaBean, встроенный в JSP или в массив, если в сервлет etc. Либо на сервере держать в виду курсора, что не всегда хорошо. Либо запросы периодически выдавать на очередную порцию страниц. Либо комбинацией всего перечисленного.
-
- Уже с Приветом
- Posts: 134
- Joined: 19 Aug 2000 09:01
- Location: PA
как разбить на страницы ResultSet
<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by AK70:
<strong>it's the notorious problem [img:91c7dccac5]images/smiles/icon_smile.gif[/img:91c7dccac5]
the simplest way with Oracle is to make a view with one of the columns is rownum.
e.g.
create table T (
C varchar2(2)
);
create or replace view V as
select C, ROWNUM row from T;
so, you can do this:
select C from V where row between 1000 and 1025;
In SQL server this won't work, because SQL server sucks [img:91c7dccac5]images/smiles/icon_smile.gif[/img:91c7dccac5] Just kidding, you may use the same idea in SQL server too</strong><hr></blockquote>
Вот что я намудрил совсем недавно.
Хранимая процедура. Внутре создаётся временная таблица (та которая временная временная, то есть с одним #; после выполнения процедуры исчезнет автоматически) которая и есть резалтсет
Открываю курсор
Пробегаю курсором по записям начиная с записи N1 до записи N2, запоминая ID этих записей
Конструирую и выполняю оператор DELETE на временной таблице, который удалит все записи, НЕ упомянутые в предыдущем шаге. То есть остаются эти самые N1 - N2 записей.
Вернуть содержимое таблицы как результат хранимой процедуры.
На словах долго, но работает прилично - всё происходит на сервере, к клиенту каждый раз прилетает только одна страница записей (в моём случае 10).
<strong>it's the notorious problem [img:91c7dccac5]images/smiles/icon_smile.gif[/img:91c7dccac5]
the simplest way with Oracle is to make a view with one of the columns is rownum.
e.g.
create table T (
C varchar2(2)
);
create or replace view V as
select C, ROWNUM row from T;
so, you can do this:
select C from V where row between 1000 and 1025;
In SQL server this won't work, because SQL server sucks [img:91c7dccac5]images/smiles/icon_smile.gif[/img:91c7dccac5] Just kidding, you may use the same idea in SQL server too</strong><hr></blockquote>
Вот что я намудрил совсем недавно.
Хранимая процедура. Внутре создаётся временная таблица (та которая временная временная, то есть с одним #; после выполнения процедуры исчезнет автоматически) которая и есть резалтсет
Открываю курсор
Пробегаю курсором по записям начиная с записи N1 до записи N2, запоминая ID этих записей
Конструирую и выполняю оператор DELETE на временной таблице, который удалит все записи, НЕ упомянутые в предыдущем шаге. То есть остаются эти самые N1 - N2 записей.
Вернуть содержимое таблицы как результат хранимой процедуры.
На словах долго, но работает прилично - всё происходит на сервере, к клиенту каждый раз прилетает только одна страница записей (в моём случае 10).
-
- Уже с Приветом
- Posts: 4468
- Joined: 21 Sep 2000 09:01
- Location: Sammamish, WA
как разбить на страницы ResultSet
webdeveloper, а Вы вроде до сих пор не сказали, о каком сервере БД идёт речь. Или я что-то пропустил?