> Tech > Etape 1 : Définir les sorties attendues

Etape 1 : Définir les sorties attendues

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

Chaque procédure stockée aboutit à  une sortie : valeur de renvoi, message d'erreur système, ou autre. La plupart des procédures effectuent aussi des opérations sur la base de données qui produisent d'autres genres de sorties. Principaux exemples : des procédures INSERT qui ajoutent des enregistrements de tables et des

Etape 1 : Définir les sorties attendues

procédures SELECT
qui génèrent des jeux de résultats.
Les procédures stockées peuvent
aussi engendrer des messages d’erreur
ou des codes d’état personnalisés,
renvoyer des valeurs, imprimer des
instructions, ou produire des paramètres.
La procédure de consultation,
usp_lookupPrice, que montre le listing
2, peut produire toutes ces différentes
sorties. La procédure recherche un
produit, définit un paramètre de sortie
égal au prix unitaire du produit puis
renvoie un code d’état de 0, indiquant
la bonne exécution.

Commençons par définir les résultats
en examinant le paramètre de sortie
@product_price. Le premier résultat
attendu est le renvoi du prix du
produit au programme appelant. Pour
mieux voir ce qui se passe dans ce scénario
de test, utilisons le code du listing
3 destiné à  peupler la table
Products. On utilisera ensuite le code
du listing 4 pour exécuter la procédure
usp_lookupPrice.

Selon le product_id utilisé pour
tester usp_lookupPrice, le résultat attendu
pour @product_price sera
$19.95, $29.95, $39.95, $11.00, ou
NULL. Mais que se passe-t-il si l’on sélectionne
un product_id invalide ? Le
résultat dépendra de la valeur de test
ou autre caractère clavier fourni à 
usp_lookupPrice. Par exemple, en entrant
un entier invalide, 11 par
exemple, comme product_id, on évoquera
une valeur de renvoi NULL. L’entrée d’un caractère alphabétique
tel que a ou f génèrera un message
d’erreur Server : Msg 8114 : Error
converting data type nvarchar to int. Et
la non-saisie d’un product_id ou d’un
caractère spécial tel que & causera un
message d’erreur Server : Msg 170 :
Incorrect syntax near ‘,’. Par conséquent,
selon les valeurs de test pour
product_id, on peut s’attendre à  ce
que l’exécution de usp_lookupPrice
résulte en un product_price valide
(quand product_id est 1, 2, 3 ou 4), un
product_price nul ou un message TSQL
signalant une erreur de conversion,
une erreur de syntaxe, ou autre
erreur système.

Voyons maintenant les instructions
de renvoi dans usp_lookupPrice. On
peut utiliser une instruction de renvoi
pour passer le contrôle de traitement
des erreurs à  un programme appelant
ou à  une procédure en attribuant des
codes d’état entiers personnalisés à 
différentes conditions d’erreur. On
peut programmer le processus appelant
pour qu’il traite le code résultant
d’une rencontre avec l’un de ces codes
d’état, à  votre gré, y compris en l’ignorant.

Le résultat attendu d’une instruction
de renvoi est 0 – le code d’état par
défaut pour une procédure qui s’exécute
bien. Outre 0, une instruction de renvoi peut renvoyer les codes d’état
réservés Microsoft de -1 à  -99, ainsi que
tout autre code personnalisé de notre
choix. Usp_lookupPrice contient deux
codes d’état personnalisés, 10 et 11,
donc les valeurs de renvoi attendues
sont

  • 0, quand aucune erreur ou avertissement
    ne se produit

  • 10, quand aucun prix unitaire n’est
    trouvé

  • 10, quand le prix unitaire est nul
  • -1 à  -99, quand usp_lookupPrice entraîne
    un code d’état réservé
  • Téléchargez cette ressource

    Guide inmac wstore pour l’équipement IT de l’entreprise

    Guide inmac wstore pour l’équipement IT de l’entreprise

    Découvrez les dernières tendances et solutions IT autour des univers de Poste de travail, Affichage et Collaboration, Impression et Infrastructure, et notre nouveau dossier thématique sur l’éco-conception et les bonnes pratiques à adopter pour réduire votre impact environnemental.

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