> 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 Renaud ROSSET - 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 cette ressource

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

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