> Tech > Un coup d’oeil au code

Un coup d’oeil au code

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

La procédure stockée IndexList démarre simplement avec une déclaration pour les deux paramètres d'entrée (nom de la table et bibliothèque de la table) et un indicateur que la procédure renvoie les données via un jeu de résultats. Un jeu de résultats peut être assimilé à  un tableau ou à  un

Un coup d’oeil au code

bloc de
valeurs de paramètres de sortie.
Le côté magique de la procédure
stockée apparaît dans la déclaration de
curseur pour le curseur C1. La clause
With Return permet au curseur de repasser
un jeu de résultats. Avec les procédures
SQL, le bloc de valeurs de sortie
est renvoyé à  l’invoqueur en
utilisant un curseur ouvert.
La déclaration de curseur ellemême
démarre par une clause With
qui définit plusieurs expressions de
table qui sont référencées dans la définition
du curseur réel. Introduites
d’abord en V4R4, les expressions de
table ne sont en réalité que des vues
SQL temporaires qui ne peuvent être
référencées que par l’instruction SQL
qui les définit. Les expressions de table
conviennent pour diviser une requête
en fragments plus petits, faciles à  comprendre.
Quatre expressions de table
sont définies pour être utilisées par le
curseur – une pour chaque type d’index
qui peut être créé sur une table :

  • SQL_Indexes : Index créés pour SQL
    Indexes

  • Const_Indexes : Index créés pour
    supporter les contraintes de base de
    données

  • KeyedLF_Indexes : Index créés pour
    supporter les fichiers logiques avec
    clés

  • KeyedPF_Indexes : Index créés pour
    supporter les fichiers physiques avec
    clés

L’utilitaire se sert de ces expressions
de table pour obtenir une liste
des index créés sur la table. Une fois
que chaque index a été identifié par
l’expression de table, celle-ci est jointe
aux autres tables pour obtenir les attributs
détaillés pour cet index. Ces
détails incluent le nom de chaque
colonne qui compose la clé d’index et l’attribut d’ordre (classement) de
chaque colonne dans la clé.
Cela explique aussi pourquoi il y a
quatre instructions Select réunies dans
la déclaration de curseur. Chaque expression
de table est jointe séparément
pour obtenir les détails d’index,
et les résultats des quatre catégories
d’index sont fusionnés avec les opérateurs
d’union. Ce modèle facilite la
personnalisation de l’utilitaire. Ainsi, si
votre société n’utilise pas de
contraintes de base de données, il suffit
de supprimer l’expression de table
et l’instruction Select associée aux
contraintes.
Après la déclaration de curseur, le
reste de la procédure est simple. La
première étape effectuée par la procédure
utilise le nom de la table d’entrée
et applique une requête à  la vue du catalogue
SysTables pour s’assurer que le
nom de table SQL long est utilisé pendant
l’ouverture du curseur. Cela permet
à  l’invoqueur de l’utilitaire de passer
le nom de table long ou court sans
imposer l’utilisation de l’un ou de
l’autre.
Une clause Order By garde les données
dans le bon ordre pour permettre
la lisibilité. Comme le montre la figure
1, un index de plus d’une colonne renvoie
une sortie qui contient de multiples
lignes d’informations. Comme
l’instruction Case dans chacune des
instructions Select réunies renvoie des
blancs pour le nom et la bibliothèque
d’index quand un index a plus d’une
colonne dans la clé, les données sont
triées par le nom d’index court et la bibliothèque
pour améliorer la lisibilité
de la sortie. Les données sont aussi
classées par la position ordinale des colonnes
de clé afin de lister la clé d’index
composite dans le bon ordre.

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010