Bonjour !
J'ai une procédure stockée qui me renvoie les résultats d'une recherche et qui se limite à n'en renvoyer que X grâce à un paramètre StartRow et et à un autre paramètre RowCount.
Avec SQL Azure, on peut profiter de OFFSET / FETCH NEXT comme dans SQL Server 2012 et cela fonctionne très bien... Par contre, je me pose une question sur le meilleur moyen de retourner le nombre de pages au total...
Actuellement, voici une version simplifiée de ma requête :
1 2 3 4 5 6
| SELECT B.Id [, ...]
FROM GeoPC A JOIN Maison_Location B
ON LocationId = A.Id
ORDER BY B.Id
OFFSET @StartRow ROWS
FETCH NEXT @RowCount ROWS ONLY; |
(j'ai retiré les différentes conditions, éléments du SELECT, etc.)
Nous avons donc de quoi retourner mes éléments !
Le problème, c'est de savoir comment retourner le nombre de pages qu'il y a au total !
J'ai deux solutions :
- soit je fais une seconde requête avec exactement les mêmes conditions et je fais un COUNT(Id) que je place en paramètre de retour. --> j'ai pas mal de conditions dans la requête, c'est embêtant pour la maintenance du code de répercuter les changements sur les deux requêtes à chaque fois....
- soit je rajoute un élément à mon SELECT de ma première requête :
SELECT B.Id [, ...], COUNT(B.Id) OVER () As NumberOfPages
Avec la deuxième solution, je n'ai qu'une requête à maintenir mais je n'avais jamais utilisé ça auparavant et je ne sais pas si c'est une bonne solution pour mon cas...
Quel est le meilleur choix ? Y en a-t-il d'autres ?
Un grand merci d'avance !
Partager