sql >> Database >  >> RDS >> Oracle

Paging met Oracle- en sql-server en generieke pagingmethode

Helaas variëren de methoden voor het beperken van het bereik van rijen die door een query worden geretourneerd van de ene DBMS tot de andere:Oracle gebruikt ROWNUM (zie het antwoord van ocdecio), maar ROWNUM werkt niet in SQL Server.

Misschien kunt u deze verschillen inkapselen met een functie die een gegeven SQL-instructie en eerste en laatste rijnummers nodig heeft en de juiste gepagineerde SQL genereert voor het doel-DBMS - bijvoorbeeld zoiets als:

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

die zou terugkeren

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

voor Oracle en iets anders voor SQL Server.

Houd er echter rekening mee dat de Oracle-oplossing een nieuwe kolom RN toevoegt aan de resultaten waarmee u te maken zult krijgen.



  1. Zoek de maximale waarde en toon de bijbehorende waarde uit een ander veld in SQL-server

  2. Een voorbereid statement, `WHERE .. IN(..)` query en sortering — met MySQL

  3. Inleiding tot speciale zoekopdrachten

  4. Android Kamer + Venster Functies