Untuk membuat pagination di Oracle Database versi 12c ke atas atau lebih baru, kita bisa menggunakan fetch dan offset seperti berikut ilustrasinya:

limit offset

Sebagai contoh disini kita akan menggunakan data pada tabel employees dengan jumlah data

select count(*) row_count
from employees;

 ROW_COUNT
----------
       107

Fetch data

Di oracle limit data dengan fetch bisa menggunakan jumlah rows dan percent

Query tersebut biasanya digunakan untuk ranking atau first result, selain itu juga kita bisa menggunakan next result seperti berikut:

Berikut hasilnya:

EMPLOYEE_ID FIRST_NAME               SALARY
----------- -------------------- ----------
        100 Steven                    24000
        101 Neena                     17000
        102 Lex                       17000
        103 Alexander                  9000
        104 Bruce                      6000

Offset data

Untuk melakukan skip data kita juga bisa menggunakan offset seperti berikut

Berikut hasilnya:

EMPLOYEE_ID FIRST_NAME               SALARY
----------- -------------------- ----------
        200 Jennifer                   4400
        201 Michael                   13000
        202 Pat                        6000
        203 Susan                      6500
        204 Hermann                   10000
        205 Shelley                   12008
        206 William                    8300

7 rows selected.

Limit & Skip

Untuk membuat pagination kita membutuhkan fetch dan offset misalnya seperti berikut:

Berikut outputnya:

Enter value for offset: 100
Enter value for limit: 5
old   4: offset &offset rows fetch first &limit rows only
new   4: offset 100 rows fetch first 5 rows only

EMPLOYEE_ID FIRST_NAME               SALARY
----------- -------------------- ----------
        200 Jennifer                   4400
        201 Michael                   13000
        202 Pat                        6000
        203 Susan                      6500
        204 Hermann                   10000

SQL> /

Enter value for offset: 105
Enter value for limit: 5
old   4: offset &offset rows fetch first &limit rows only
new   4: offset 105 rows fetch first 5 rows only

EMPLOYEE_ID FIRST_NAME               SALARY
----------- -------------------- ----------
        205 Shelley                   12008
        206 William                    8300