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 :

Test lors de la création d'un index


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut Test lors de la création d'un index
    Bonjour,

    Je souhaiterais mettre en place en test PL/SQL lors de la création d'un index sur une table, si la création de l'index n'est pas réalisé parce que celui ci existe déja je souhaiterais afficher un message sur la console.

    j'avais pensé a ce code mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    BEGIN
     
           BEGIN
     
               CREATE INDEX monIndex ON maTable ("maColonne" ASC) TABLESPACE monTablespace;
            EXCEPTION
              WHEN OTHERS THEN
                    DBMS_OUTPUT.PUT_LINE('index déjà créé');
          END;
     
    END;
    si quelqu'un aurait une idée, je suis preneur.

    Merci d'avance.

    Sébastien

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pourquoi vouloir réinventer la roue, ce message existe déjà :
    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
    create table t
    as
    select dummy from dual;
    -- Table created
     
    create index i_t1
    on t(dummy);
    -- Index created
     
    create index i_t1
    on t(dummy);
    -- ORA-00955: ce nom d'objet existe déjà
     
    create index i_t2
    on t(dummy);
    -- ORA-01408: cette liste de colonnes est déjà indexée
     
    drop table t;
    -- Table dropped

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    ma question porte sur un message "personnalisé" pas sur le message renvoyé par oracle.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Oui, sur le fond je ne comprends pas l'intérêt, après c'est peut-être juste pour vous entraîner peu importe.

    Pour la forme, ce qui ne fonctionne pas c'est le CREATE INDEX.
    On ne peut pas passer ce genre de commande directement en PL/SQL :
    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
    CREATE TABLE t
    AS
    SELECT dummy FROM dual;
    -- Table created
     
    BEGIN
      EXECUTE IMMEDIATE 'CREATE INDEX i_t1 ON t(dummy)';
      DBMS_OUTPUT.PUT_LINE('OK - Index créé');
      EXCEPTION
        WHEN OTHERS
        THEN DBMS_OUTPUT.PUT_LINE('ERR - Index déjà créé');
    END;
    -- OK - Index créé
     
    BEGIN
      EXECUTE IMMEDIATE 'CREATE INDEX i_t1 ON t(dummy)';
      DBMS_OUTPUT.PUT_LINE('OK - Index créé');
      EXCEPTION
        WHEN OTHERS
        THEN DBMS_OUTPUT.PUT_LINE('ERR - Index déjà créé');
    END;
    -- ERR - Index déjà créé
     
    DROP TABLE t
    -- Table dropped

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Je ne vois pas trop l'interêt non plus mais si ça a vocation à être utilisé il faut utiliser raise_application_error à la place de dbms_output.
    http://sheikyerbouti.developpez.com/...age=Chap1#L1.3
    http://download.oracle.com/docs/cd/B...24/07_errs.htm

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut
    Merci Waldar c'est exactement se que je cherchais a faire, pour ce qui est des raise_application_error je vais quand même y jeter un coup d'œil.

    Cordialement,

    Sébastien

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

Discussions similaires

  1. Testing DACPAC : Erreur lors de la création
    Par Kropernic dans le forum Administration
    Réponses: 1
    Dernier message: 02/06/2015, 12h01
  2. Réponses: 3
    Dernier message: 09/01/2015, 17h13
  3. Création d'index lors d'une création de contrainte
    Par William-Brenouille dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 19/07/2011, 09h19
  4. Réponses: 7
    Dernier message: 22/02/2005, 13h07
  5. [xsl][XML] création d'un index
    Par Boosters dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 28/11/2002, 08h29

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