IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Mettre une exception


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Developpeur Logiciel
    Inscrit en
    Mai 2016
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 108
    Par défaut Mettre une exception
    Bonjour,

    Je travail sur un projet et je dois détecter si une erreur à lieu sur ce script
    voici un exemple du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    --SET HEADING OFF FEEDBACK OFF ECHO OFF PAGESIZE 400
    --spool "backup_specifique_enviro.log"; 
     
    DROP TABLE sys.param_machine_tempo;
    DROP TABLE sys.parametres_tempo;
    DROP TABLE sys.directories_tempo ;
     
    CREATE TABLE sys.param_machine_tempo as (select * from arthus.param_machine);
     
    CREATE TABLE sys.parametres_tempo as (select * from arthus.parametres);
     
    CREATE TABLE sys.directories_tempo as 
    (select trim('CREATE OR REPLACE DIRECTORY '||DIRECTORY_NAME ||' AS '''|| DIRECTORY_PATH|| '''') as script 
      from ALL_directories);
     
    spool off;
     
    exit;
    Où puis-je placer une détection d'erreur étant donné que je n'est pas de begin end

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Et si tu crées un .sql de ce genre? Je te laisse voir où tu dois mettre ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    SET serveroutput ON
    SET verify OFF
    SET feedback OFF
     
    DECLARE
    v_n_nb  NUMBER(5);
    v_n_salaire_saisi NUMBER(8);
     
    excep_nb_zero EXCEPTION;
    excep_nb_multi EXCEPTION;
     
    BEGIN
    v_n_salaire_saisi := '&Salaire'; --L'utilisateur saisi un salaire.
     
     
    /* Début script applicatif */
    SELECT count(*) INTO v_n_nb FROM employees WHERE salary=v_n_salaire_saisi;
     
    if v_n_nb = 0 then
            RAISE excep_nb_zero;
    elsif v_n_nb = 1 then
            INSERT INTO messages SELECT first_name || ' ' || last_name || ' ' || v_n_salaire_saisi || '.' from EMP WHERE salary = v_n_salaire_saisi;
    elsif v_n_nb > 1 then
            RAISE excep_nb_multi;
    end if;
     
    /* Fin script applicatif */
     
    EXCEPTION
    WHEN excep_nb_zero THEN
            INSERT INTO messages VALUES('Pas d''employee avec le salaire ' || v_n_salaire_saisi || '.');
    WHEN excep_nb_multi THEN
            INSERT INTO messages VALUES('Plus d''un employee avec le salaire ' || v_n_salaire_saisi || '.');
    WHEN OTHERS THEN
            INSERT INTO messages VALUES('Une erreur est survenue.'); --A tester en saisissant des lettres au lieu d'un nombre pour le salaire.
    END;
    /

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Qu'est ce que vous souhaitez faire exactement ? Quel comportement ?
    C'est une très mauvaise idée que de créer des objets dans SYS.

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    C'est une très mauvaise idée que de créer des objets dans SYS.
    Ah oui, je plussoie, c'est vertement déconseillé par Oracle

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Sous SQL*Plus, WHENEVER SQLERROR EXIT FAILURE va stopper à la première erreur. Il y a moyen de préciser différents codes retour.
    Cordialement,
    Franck.

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Et de façon plus précise, qu'est-ce que tu entends par "détection d'erreur" et qu'est-ce que tu veux faire de cette erreur une fois détectée : affichage de l'erreur, arrêt du programme, traitement spécifique à cette erreur...?

  7. #7
    Membre très actif
    Homme Profil pro
    Developpeur Logiciel
    Inscrit en
    Mai 2016
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Developpeur Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 108
    Par défaut
    Merci pour vos réponse.

    Ce que je veux dire c'est que en mettant begin et end une erreur ce crée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    begin
    --SET HEADING OFF FEEDBACK OFF ECHO OFF PAGESIZE 400
    --spool "backup_specifique_enviro.log"; 
     
    DROP TABLE sys.param_machine_tempo;
    DROP TABLE sys.parametres_tempo;
    DROP TABLE sys.directories_tempo;
     
    CREATE TABLE sys.param_machine_tempo as (select * from arthus.param_machine);
     
    CREATE TABLE sys.parametres_tempo as (select * from arthus.parametres);
     
    CREATE TABLE sys.directories_tempo as 
    (select trim('CREATE OR REPLACE DIRECTORY '||DIRECTORY_NAME ||' AS '''|| DIRECTORY_PATH|| '''') as script 
      from ALL_directories);
     
    exception
    when other then
    insert_hib('Etape backup_s_e',5,'');
     
    --spool off;
    end;
    /
    exit;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Rapport d'erreur -
    ORA-06550: Ligne 5, colonne 1 :
    PLS-00103: Symbole "DROP" rencontré à la place d'un des symboles suivants :
     
       begin case declare exit for goto if loop mod null pragma
       raise return select update while with <identificateur>
       <identificateur entre guillemets> <variable bind> << close
       current delete fetch lock insert open rollback savepoint set
       sql execute commit forall merge pipe
    Symbole "lock inséré avant "DROP" pour continuer.
    ORA-06550: Ligne 5, colonne 35 :
    PLS-00103: Symbole ";" rencontré à la place d'un des symboles suivants :
     
       . , @ in <identificateur> <identificateur entre guillemets>
       partition subpartition
    06550. 00000 -  "line %s, column %s:\n%s"
    *Cause:    Usually a PL/SQL compilation error.
    *Action:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] Affichage numéro de ligne d'une exception
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 23/09/2003, 14h59
  2. Réponses: 2
    Dernier message: 28/08/2003, 00h00
  3. Réponses: 2
    Dernier message: 08/08/2003, 17h30
  4. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18
  5. Réponses: 3
    Dernier message: 01/11/2002, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo