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
Guide de Threat Intelligence contextuelle
Ce guide facilitera l’adoption d’une Threat Intelligence - renseignement sur les cybermenaces, cyberintelligence - adaptée au "contexte", il fournit des indicateurs de performance clés (KPI) pour progresser d' une posture défensive vers une approche centrée sur l’anticipation stratégique
Les articles les plus consultés
- IBM i célèbre ses 25 ans
- Afficher les icônes cachées dans la barre de notification
- Cybersécurité Active Directory et les attaques de nouvelle génération
- 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
- L’essor de l’IA propulse les cyberattaques à des niveaux records
- L’IA sous contrôle : un impératif pour la souveraineté des entreprises
- CESIN : un baromètre qui mesure le risque cyber réel
- Face aux ransomwares, la résilience passe par les sauvegardes immuables
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
