jeudi 3 juin 2010

sql : oracle limiter le nombre de requêtes

Attention comment limiter le nombre d'enregistrements retournés par oracle ... pour cela il faut utiliser rownum ...

attention, si la requete est trié avec un order by ... le rownum ne fonctionne plus ... eh oui !!! le rownum est attribué avant le tri final !!!

La solution est simple, il faut faire une sous-requete et le rownum ensuite ...

ici on recupère les 1000 premiers ...

SQL> SELECT * FROM (
SELECT *
FROM Commande c
ORDER BY NO_CMD
)
WHERE ROWNUM <= 1000 ;


Il est aussi possible de mettre un parametre dans une clause where afin de filtrer les resultats (ex: de 1000 à 2000 , puis de 3000 à 4000) comme pour une pagination ...

ici, les 1000 premiers enregistrements pour les commande de n° commande > 2564 ...

tout est bien explique ici !!!

SQL> SELECT * FROM (
SELECT *
FROM Commande c WHERE c.NO_CMD > 2564
ORDER BY NO_CMD
) a
WHERE ROWNUM <= 1000 ;


Attention ROWNUM avec supérieur ne fonctionne pas ...

Aucun commentaire:

Enregistrer un commentaire