Utiliser des fonctions d’erreur dans un TRY...CATCH imbriqué
Vous avez reçu de nouveaux vélos électriques pour votre magasin, vous devez donc mettre à jour le stock.
Vous souhaitez enregistrer la réception de 2 vélos Trek Powerfly 5 - 2018 au prix de 3 499,99 $ chacun, et de 3 vélos New Power K- 2018 à 1 999,99 $ chacun.
Vous essayez d’insérer les produits dans la base, car vous pensez qu’il s’agit de nouveaux modèles. Cependant, vous avez oublié que le premier est déjà en stock. Heureusement, la table products impose une contrainte exigeant l’unicité du nom de chaque produit.
Vous préparez un script qui gère les erreurs possibles lors des insertions. Vous voulez aussi enregistrer les erreurs éventuelles dans une table appelée errors et, si l’insertion de l’erreur échoue, afficher le numéro et le message de l’erreur.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions
- Encadrez la gestion d’erreur avec un bloc
CATCH. - Insérez
'Error inserting a product'dans la tableerrorset encadrez cette insertion avec un autre blocTRY. - Encadrez la gestion d’erreur imbriquée avec un autre bloc
CATCH. - Dans le bloc
CATCHinterne, sélectionnez la ligne de l’erreur et le message d’erreur.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES ('Trek Powerfly 5 - 2018', 2, 3499.99),
('New Power K- 2018', 3, 1999.99)
END TRY
-- Set up the outer CATCH block
___ ___
SELECT 'An error occurred inserting the product!';
-- Set up the inner TRY block
___ ___
-- Insert the error
INSERT INTO ___
VALUES ('Error inserting a product');
___ ___
-- Set up the inner CATCH block
___ ___
-- Show number and message error
SELECT
___ AS line,
___ AS message;
___ ___
___ ___