260 likes | 387 Views
Test de lecture. #1 Les erreurs relatives aux concepts d’affaires (du type un étudiant a un matricule de 8 chiffres) doivent être définis par l’usager (vrai ou faux) ?
E N D
Test de lecture #1 Les erreurs relatives aux concepts d’affaires (du type un étudiant a un matricule de 8 chiffres) doivent être définis par l’usager (vrai ou faux) ? #2 Une erreur générée dans un sous-bloc (sauf la procédure application_error) entraîne la fin de tout le programme (vrai ou faux) ? #3 SQLERM et SQLCODE sont 2 mots qui peuvent remplacer la procédure RAISE_ APPLICATION_ERROR (Vrai ou Faux) ? #4 Si on veut traiter une erreur X, on écrit : _1_ X _2_ dans la zone exception? #5 Quel mot est utilisé pour dire toutes les autres erreurs non définies par l’usager ?
DEVOIR 1 • BRAVO ! • Attention aux noms des variables : • Number n_ • Varchar2 v_ • Cursor cur_ • RowId row_ • Char c_ • Long l_ • Date d_
DEVOIR 2 • Utilisation de curseurs • Update • Delete
VALIDATION DES DONNÉES ET GESTION D’ERREURS Par : Joël Huot
À FAIRE • Lectures : • Documentation sur les triggers • Documentation sur les procédures et les fonctions • Leason 8 Database Triggers • Article Oracle sur les Triggers
À FAIRE • Survoler : • Elmasri & Navathe 734-744
À FAIRE • Exercices : • Valider les champs suivants dans le formulaire FM_Clients • No Client • No téléphone • Courriel • Code Postal • Gestion d’erreurs pour programme Monnaies (Version 3) entre 9hrs et 17hrs pou l’usager commis
** À FAIRE ** • GIS 855 : TOUT !!!
TRAVAIL GIS 855 • Mettre des données dans votre BD • Préparer des programmes et menus • Compléter les programmes avec routines de validation appropriées
TRAVAIL GIS 855 • Secrétariat de programme : responsable des notes inscrites... • Étudiant : l’étudiant s’inscrit lui-même aux cours qu’il désire suivre... • Département... • Régistraire ... • Administration de la faculté... • Il vous appartient d’imaginer (avec réalisme) les règles d’affaires à inclure
TRAVAIL GIS 855 • Maintenance des instructeurs (FORM) • Maintenance des étudiants (FORM) • Enregistrement des étudiants dans les cours (FORM) • Inscription des notes (FORM) • Liste sommaire des profs.. l'usager devra spécifier le département désiré (sql Plus) • Liste sommaire des personnels (REPORT) • Liste complète des personnels (REPORT) • Relevé détaillé de notes (REPORT) • Liste de contrôle des professeurs (en sql*plus)
Qu’est-ce qu’on peut valider • Le format • Le contenu • L’existence • Le droit de faire l’opération (usager) • Les opérations à faire SI ça arrive
LE FORMAT • Ne demande pas de ressources systèmes • Les différents formats • Number to_number • Char to_char • Varchar2 to_char • Date to_date
LE CONTENU • Ne demande pas de ressources systèmes : • No_client devrait être cl0000-00 • Le code postal doit être A9A 9A9 • La date doit être antérieure à la date d’aujourd’hui • Le pays doit être en Amérique
L’EXISTENCE • Demande des ressources systèmes minimales • Si le tuplet existe (tester no, nom, tel…) • Si le tuplet correspondant existe (no_client, no_produit…. Pour commande …. )
LES DROITS • On pourrait n’autoriser l’accès à une table qu’entre 9hrs et 17hrs… • Un utilisateur pourrait être empêché de faire des opérations d’update, de delete ou d’insert… • On pourrait vérifier si personne ne bloque les tuplets pour update
Si ça arrive DO • Demande au serveur de vérifier les opérations sur la table Nous verrons plus en détail avec les triggers • On pourrait contrôler localement les actions à faire… • Si on delete commandes, il faut supprimer produits_commandes
OÙ • Dans un programme PLSQL exécutable dans SQL*Plus • Par étape, de celui qui demande le moins de ressources à celui qui en demande le plus • Dans Form ou Report… appliqué sur des évènements (comme VB)
ZONE D’EXCEPTION • Exception • Utilisé seulement quand il y aune erreur de générée • Raise application error (-20001, ‘Mauvais Toto’); • Erreur Oracle
Exception Oracle Error SQLCODE Value ACCESS_INTO_NULL ORA-06530 -6530 COLLECTION_IS_NULL ORA-06531 -6531 CURSOR_ALREADY_OPEN ORA-06511 -6511 DUP_VAL_ON_INDEX ORA-00001 -1 INVALID_CURSOR ORA-01001 -1001 INVALID_NUMBER ORA-01722 -1722 LOGIN_DENIED ORA-01017 -1017 NO_DATA_FOUND ORA-01403 +100 NOT_LOGGED_ON ORA-01012 1012 PROGRAM_ERROR ORA-06501 -6501 ROWTYPE_MISMATCH ORA-06504 -6504 SELF_IS_NULL ORA-30625 -30625 STORAGE_ERROR ORA-06500 -6500 SUBSCRIPT_BEYOND_COUNT ORA-06533 -6533 SUBSCRIPT_OUTSIDE_LIMITORA-06532 -6532 SYS_INVALID_ROWID ORA-01410 -1410 TIMEOUT_ON_RESOURCE ORA-00051 -51 TOO_MANY_ROWS ORA-01422 -1422 TRANSACTION_BACKED_OUT ORA-00061 -61 VALUE_ERROR ORA-06502 -6502 ZERO_DIVIDE ORA-01476 -1476
ZONE D’EXCEPTION When exception_name Then statements; When others Then statements;
Erreurs de l’usager Declare Erreur_toto exception; c_toto varchar2(20) := 'bonjour toto'; Begin Raise Erreur_toto; Exception When erreur_toto then dbms_output.put_line (c_toto); End;
Gestion d’erreur -- VARIABLES D'INFORMATION v_info varchar2(500); v_test number(1); erreur EXCEPTION; BEGIN -- TESTER SI LES VALEURS ENTRÉES SONT VIDES v_info := 'Aucun numéro de lot n''a été entré.'; IF LTRIM(v_no_lot_test) IS NULL THEN RAISE erreur ; END IF; EXCEPTION WHEN erreur THEN Raise_application_error(-20010,v_info); END;
FONCITONS VEDETTES • Fonctions de formatage : • To_char(number()) • To_date(char, ‘dd-mon-yy ’)) • To_number(char()) • LTrim ()
FONCITONS VEDETTES • SQLCODE • SQLERM
FORMS / REPORTS • Les modules (blocs) sont générés soit par Designer ou encore à la main • Designer (selon les modèles) • À la main (même chose qu’un formulaire Access ou VB) • Programmation événementielle avec des « triggers »