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

Personsøgning med Oracle og sql-server og generisk personsøgningsmetode

Desværre varierer metoderne til at begrænse rækkevidden af ​​rækker, der returneres af en forespørgsel, fra et DBMS til et andet:Oracle bruger ROWNUM (se ocdecios svar), men ROWNUM fungerer ikke i SQL Server.

Måske kan du indkapsle disse forskelle med en funktion, der tager en given SQL-sætning og første og sidste rækkenumre og genererer den passende paginerede SQL for mål-DBMS - dvs. noget som:

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

som ville vende tilbage

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

til Oracle og noget andet til SQL Server.

Bemærk dog, at Oracle-løsningen tilføjer en ny kolonne RN til de resultater, du skal håndtere.



  1. Returner nul, hvis der ikke findes nogen post

  2. Simpel parametrering og trivielle planer — del 1

  3. Hvordan kan jeg oprette forbindelse til MySQL i Python 3 på Windows?

  4. Sådan håndteres et enkelt tilbud i Oracle SQL