
Envoyé par
skuatamad
Il manque l'ORDER BY dans ta requête exemple

.
Apparement c'est à cause de rownum, avec row_number ça marche :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| SQL> SELECT *
2 FROM ( SELECT subreq.*
3 FROM ( SELECT t.ROWID, t.*,
4 row_number() over (order by empno) as rn
5 FROM EMP t ) subreq
6 WHERE rn <= 10)
7 WHERE rn >= 5;
ROWID EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RN
------------------ ---------- ---------- --------- ---------- -------- ---------- ---------- ---------- ----------
AAAF8jAABAAALJJAAE 7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30 5
AAAF8jAABAAALJJAAF 7698 BLAKE MANAGER 7839 01/05/81 2850 30 6
AAAF8jAABAAALJJAAG 7782 CLARK MANAGER 7839 09/06/81 2450 10 7
AAAF8jAABAAALJJAAH 7788 SCOTT ANALYST 7566 09/12/82 3000 20 8
AAAF8jAABAAALJJAAI 7839 KING PRESIDENT 17/11/81 5000 10 9
AAAF8jAABAAALJJAAJ 7844 TURNER SALESMAN 7698 08/09/81 1500 0 30 10
6 rows selected.
SQL> |
Mais bon dans le plan on perd le STOP KEY... Donc pas sûr que ce soit optimal.
Mais comme on ne sait pas l'objectif le contournement est peut être suffisant.
Merci, seulement:
row_number() over (ORDER BY empno) AS rn
ici ORDERBY empno est "en dur" alors que ce système est sensé s'adapter à un nom de table donné dynamiquement.
Le but est d'afficher dans un bloc dynamique (un JTable Java) les données de n'importe quelle table.
Partager