A présent, nous pouvons rechercher les livres à renvoyer dans l'ensemble de résultats. La version actuelle de SQL/400 ne permet pas d'indiquer que l'on souhaite sélectionner les N premiers enregistrements (cependant, cette fonction devrait être disponible dans d'autres implémentations du SQL). On est donc contraint de lire les
Trouver la position d’un livre
enregistrements les uns après les autres dans un ordre décroissant par rapport
à la colonne de classement et de compter jusqu’à ce que l’on atteigne le
nombre de lignes désiré. Le curseur BookSaleCursor déclaré en E fournit la
table de résultats ordonnée de TotalUnits entrées pour les ventes de livres réalisées
la semaine précédente dans la catégorie spécifiée. Le curseur est ouvert en
L, puis une boucle (en N) récupère les lignes jusqu’à ce qu’il n’y ait plus
aucune ligne ou que le nombre de lignes défini ait été récupéré, ou encore
qu’une erreur se soit produite. Chaque instruction Fetch exécutée avec succès
réinitialise la valeur de la variable de travail RankTotalUnits à la valeur récupérée
dans la colonne TotalUnits. Une fois la boucle terminée, le curseur est refermé
(O).
Les livres qui ont le même
TotalUnits sont ex à¦quo, et le nombre approprié
de places est sauté pour déterminer le véritable rang du ou des livres
suivants
Remarquez comment, dans la boucle, la
variable de travail CurRank est incrémentée pour chaque enregistrement récupéré,
et ce, sans se soucier de la valeur TotalUnits de l’enregistrement. Cette
technique simple fonctionne même lorsque certaines lignes possèdent la même
valeur TotalUnits, car tout ce qu’il nous faut trouver est un livre dans
l’ensemble des livres qui possèdent le rang spécifié par le paramètre
CategoryRankIn. Considérez l’exemple suivant des six meilleures ventes de
livres :
Nombre total
Rang Valeur CurRank
16
1
1
12
2
2
12
2
3
11
4
4
10
5
5
10
5
6
Vous pouvez constater que les livres qui ont la même
valeur TotalUnits sont ex à¦quo dans le palmarès,
et que le nombre approprié de places est omis pour déterminer le rang véritable
du ou des livres suivants dans l’ordre de classement des ventes. Cependant, la
boucle de la procédure GetTopBook, assigne uniquement des rangs séquentiels à
chaque livre au fur et à mesure qu’ils sont récupérés. Cela ne crée aucun
problème car pour trouver les livres classés en cinquième position ou mieux,
par exemple, on peut lire l’une ou l’autre des deux lignes possédant un
TotalUnits de 10. L’important est de déterminer que 10 représente la valeur
seuil de TotalUnits pour les livres que l’on souhaite inclure dans l’ensemble de
résultats renvoyé. Dans ce cas, l’ensemble de résultats inclurait six livres,
et non cinq.
Vous pouvez constater que j’ai affecté
à la variable à RankTotalUnits la valeur MaxInt (M) avant la boucle. Si aucune
ligne ne satisfait la condition de recherche du curseur, la boucle ne récupérera
aucune ligne et RankTotalUnits restera égale à MaxInt, qui représente une
valeur seuil au-dessus de la valeur TotalUnits de n’importe quel livre (au moins
dans notre exemple). Cette approche n’est pas véritablement essentielle compte
tenu de la manière dont j’ai implémenté le reste de la procédure cataloguée,
mais elle garantit que RankTotalUnits possède une valeur précise à la fin de
la boucle.
Téléchargez cette ressource
Mac en entreprise : le levier d’un poste de travail moderne
Ce livre blanc répond aux 9 questions clés des entreprises sur l’intégration du Mac : sécurité, compatibilité, gestion, productivité, coûts, attractivité talents, RSE et IA, et l’accompagnement sur mesure proposé par inmac wstore.
Les articles les plus consultés
- Chiffrements symétrique vs asymétrique
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Les 6 étapes vers un diagnostic réussi
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
Les plus consultés sur iTPro.fr
- IA : ne déléguez pas votre cœur de métier à une boîte noire
- Identité de l’IA : 4 priorités pour anticiper plutôt que subir la régulation
- Sauvegarder les données ne suffit plus : il faut refonder le poste de travail
- Cybermalveillance : 2025, seuil franchi pour les victimes comme pour les cybercriminels
Articles les + lus
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Adapter la sécurité OT aux réalités de l’industrie
Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
À la une de la chaîne Tech
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
- Adapter la sécurité OT aux réalités de l’industrie
- Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
- Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
