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

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
- Les PME attendent un meilleur accès aux données d’émissions de la part des fournisseurs
- Fraude & IA : Dr Jekyll vs. Mr Hyde, qui l’emporte ?
- Gestion du cycle de vie des outils de cyberdéfense : un levier de performance pour les entreprises
