Exercices Corrigés PL/SQL: Exceptions
La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec PL/SQL. Nous espérons que ces exercices vous aideront à améliorer vos compétences en PL/SQL. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!
Vous pouvez lire notre tutoriel PL/SQL avant de résoudre les exercices suivants.
Exercices corrigés PL/SQL: Les exceptions
1. Écrire un bloc PL/SQL pour générer une exception lors d’une division par zéro. Exemple:
dividende = 5; diviseur = 0; Erreur : Division par zéro
2. Traiter l’exception NO_DATA_FOUND lors de l’extraction d’une ligne d’une table et qu’aucun enregistrement correspondant n’est trouvé.
Table: clients +-----------+----------------+-------------+--------+----------------+ | client_id | nom_cl | ville | age | fournisseur_id | +-----------+----------------+-------------+--------+----------------+ | 1001 | Alex Barbara | Paris | 25 | 6001 | | 1002 | Lois Collins | Lyon | 30 | 6001 | | 1005 | Karen Farley | Nice | 44 | 6002 | | 1006 | Kevin Thompson | Paris | 65 | 6003 | +-----------+----------------+-------------+--------+----------------+
Exemple:
SELECT nom_cl FROM clients WHERE client_id = 9999; Erreur : Aucun enregistrement correspondant n'a été trouvé
3. Traiter l’exception TOO_MANY_ROWS lors de la récupération de plusieurs lignes au lieu d’une seule dans une table.
Table: clients +-----------+----------------+-------------+--------+----------------+ | client_id | nom_cl | ville | age | fournisseur_id | +-----------+----------------+-------------+--------+----------------+ | 1001 | Alex Barbara | Paris | 25 | 6001 | | 1002 | Lois Collins | Lyon | 30 | 6001 | | 1005 | Karen Farley | Nice | 44 | 6001 | | 1006 | Kevin Thompson | Paris | 65 | 6003 | +-----------+----------------+-------------+--------+----------------+
Exemple:
SELECT * FROM clients WHERE fournisseur_id = 6001; Plusieurs lignes trouvées pour l'identifiant du fournisseur: 6001
4. Traiter l’exception INVALID_NUMBER lors de la conversion d’une valeur non numérique en un nombre. Exemple:
'hello' -> Number (Erreur : Nombre invalide)
5. Traiter l’exception DUP_VAL_ON_INDEX lors de l’insertion d’une valeur dupliquée dans une table avec une contrainte unique.
Table: clients +-----------+----------------+-------------+--------+----------------+ | client_id | nom_cl | ville | age | fournisseur_id | +-----------+----------------+-------------+--------+----------------+ | 1001 | Alex Barbara | Paris | 25 | 6001 | | 1002 | Lois Collins | Lyon | 30 | 6001 | | 1005 | Karen Farley | Nice | 44 | 6001 | | 1006 | Kevin Thompson | Paris | 65 | 6003 | +-----------+----------------+-------------+--------+----------------+
Exemple:
INSERT INTO clients (client_id) VALUES (1001); Erreur : Une valeur en double existe déjà.
6. Gérer l’exception VALUE_ERROR lors de l’affectation d’une valeur incompatible à une variable. Exemple:
Number = 'hello' (Affectation de valeurs incompatibles)
7. Traiter l’exception PROGRAM_ERROR lorsqu’un programme PL/SQL rencontre une erreur interne. Exemple:
Si 20 > 5 alors (levez une erreur interne)
8. Traiter l’exception ACCESS_INTO_NULL lors d’une tentative d’accès à un enregistrement NULL.
Table: employees +------+---------+----------+----------+----------------+ | id | nom | prenom | salaire | departement_id | +------+---------+----------+----------+----------------+ | 1001 | Eddie | Parker | 6000.00 | 8 | | 1002 | Eleanor | Deas | 4500.00 | 8 | | 1003 | Glen | Powell | 5000.00 | 6 | | 1004 | Ali | Fawaz | 7800.00 | 2 | | 1005 | Earl | Horn | 9000.00 | 9 | | 1006 | Bryan | Savoy | 8000.00 | 3 | +------+---------+----------+----------+----------------+