Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Stronicowanie za pomocą serwera Oracle i sql oraz ogólna metoda stronicowania

Niestety, metody ograniczania zakresu wierszy zwracanych przez zapytanie różnią się w zależności od DBMS:Oracle używa ROWNUM (patrz odpowiedź od ocecio), ale ROWNUM nie będzie działać w SQL Server.

Być może możesz zawrzeć te różnice za pomocą funkcji, która pobiera dane wyrażenie SQL oraz numer pierwszego i ostatniego wiersza i generuje odpowiednią paginatd SQL dla docelowego DBMS - tj. coś takiego:

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

który zwróci

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

dla Oracle i coś innego dla SQL Server.

Należy jednak pamiętać, że rozwiązanie Oracle dodaje nową kolumnę RN do wyników, z którymi będziesz musiał sobie poradzić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wprowadzenie do instrukcji FORALL w bazie danych Oracle

  2. Wyzwalacze prewencyjne

  3. Pobieranie danych wyjściowych z dbms_output.get_lines za pomocą JDBC

  4. ORA-04021:przekroczono limit czasu podczas oczekiwania na zablokowanie obiektu

  5. Czy konieczne jest wyrzucenie DbCommand po użyciu?