> Tech > Erreurs définies par l’utilisateur dans des procédures stockées SQL

Erreurs définies par l’utilisateur dans des procédures stockées SQL

Tech - Par iTPro - Publié le 24 juin 2010
email

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 gratuitement cette ressource

Sécurité Office 365 : 5 erreurs à ne pas commettre

Sécurité Office 365 : 5 erreurs à ne pas commettre

A l’heure où les données des solutions Microsoft de Digital Workplace sont devenues indispensables au bon fonctionnement de l’entreprise, êtes-vous certain de pouvoir compter sur votre plan de sécurité des données et de sauvegarde des identités Microsoft 365, Exchange et Teams ? Découvrez les 5 erreurs à ne pas commettre et les bonnes pratiques recommandées par les Experts DIB France.

Tech - Par iTPro - Publié le 24 juin 2010