Pour aider à traiter les erreurs définies par l'utilisateur, le langage de base de données SQL/PSM supporte deux structures de programmation : Signal et Resignal. L'instruction Signal signale une condition d'erreur ou d'avertissement et provoque le retour d'une erreur ou de l'avertissement avec le SQLState et le texte de message
Erreurs définies par l’utilisateur dans des procédures stockées SQL
spécifiés.
L’instruction Resignal resignale
une condition d’exception ; on ne peut
la coder que dans le cadre d’un gestionnaire
de condition SQL/PSM.
Notons que toute valeur SQL State non
réservée pour utilisation par le gestionnaire
de base de données peut être
utilisée dans l’instruction Signal.
Voyons quelques exemples pratiques.
Nous commençons par une
procédure stockée SQL mise en oeuvre
dans SQL/PSM. Nous utiliserons la routine
ModSal de la figure 1 pour modifier
le salaire d’un employé. Les données
personnelles des employés
(numéro de l’employé, détails de la rémunération,
numéro de département, par exemple) sont stockées dans la
table Employee. La table Department
contient l’information sur le département,
y compris le numéro d’employé
de son manager. Les lignes dans
Employee et Department sont associées
par le numéro de département.
La procédure stockée SQL ModSal applique
une règle de gestion stipulant
que la rémunération d’un employé ne
doit pas dépasser celle de son manager.
La logique de la routine vérifie si la
règle est transgressée et si oui, la routine
signale une condition d’erreur au
processus appelant. Les instructions
Signal et Resignal transmettent les erreurs
définies par l’utilisateur au processus
appelant. La routine accepte
deux paramètres : employee number
de type Char(6) et salary change de
type Decimal(9,2).
En A de la figure 1, le gestionnaire d’erreurs défini pour le SQLState
’38S01′ signale la condition d’erreur
définie par l’utilisateur. L’instruction
Resignal remet le SQLState de renvoi à
’38S01′ et définit le message de diagnostic.
Dès que Resignal est déclenchée,
la procédure stockée renvoie immédiatement
l’erreur spécifiée à
l’appelant dans le SQLCA (SQL
Communications Area).
La SQLCA est une ensemble de variables
mis à jour à la fin de l’exécution
de chaque instruction SQL. Le SQLCA
contient, en autres choses, une variable
SQLCode (définie d’après le
code de renvoi SQL) et une variable
SQLErrMc (définie d’après le texte de
message associé à un SQLCode
donné). Le SQLCA est inclus dans le
corps de la procédure SQL par le précompilateur
SQL.
Dans le cas de Signal/Resignal, SQLCode est réglé sur -438 après le
renvoi. La totalité de l’élément
SQLErrMc de la zone SQLCA est disponible pour le message personnalisé.
Autrement dit, aucune troncature
du texte de message d’erreur défini par l’utilisateur ne se produit avec les procédures
stockées SQL.
En B, le SQLState ‘02000’ est renvoyé
à la procédure stockée SQL s’il
n’existe pas de données pour le numéro
d’employé transmis comme le
premier paramètre. Cette condition
peut être lancée par l’instruction Fetch
ou searched Update. Le gestionnaire
d’erreurs traite cette condition en signalant
SQLState ’38S02′ à l’appelant. En C, si la règle de gestion est
transgressée, SQLState ’38S01′ est signalé.
Le contrôle est alors transféré au
gestionnaire d’erreurs défini pour cet
état. Notons que Signal aurait pu inclure
le texte du message et être signalé
directement à l’invoqueur.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Cybersécurité française 2026 : explosion des startups, ralentissement des scale-ups et virage stratégique de l’IA
- Le Cercle de l’Innovation décerne le Prix de l’Innovation du Public 2026
- Avec l’IA agentique, la robustesse des SI redevient stratégique
- Les erreurs du secteur bancaire dans son approche IA
Articles les + lus
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
À la une de la chaîne Tech
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
