Oracle
 sql >> Database >  >> RDS >> Oracle

Paging con server Oracle e sql e metodo di paging generico

Sfortunatamente, i metodi per limitare l'intervallo di righe restituite da una query variano da un DBMS all'altro:Oracle utilizza ROWNUM (vedi la risposta di ocdecio), ma ROWNUM non funziona in SQL Server.

Forse puoi incapsulare queste differenze con una funzione che accetta una determinata istruzione SQL e i numeri della prima e dell'ultima riga e genera l'SQL paginatd appropriato per il DBMS di destinazione, ovvero qualcosa del tipo:

sql = paginated ('select empno, ename from emp where job = ?', 101, 150)

che ritornerebbe

'select * from (select v.*, ROWNUM rn from ('
 + theSql
 + ') v where rownum < 150) where rn >= 101'

per Oracle e qualcos'altro per SQL Server.

Tuttavia, tieni presente che la soluzione Oracle aggiunge una nuova colonna RN ai risultati che dovrai gestire.