Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2010, 10h42   #1
Invité de passage
 
Sebastien
Inscription : octobre 2009
Messages : 6
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : octobre 2009
Messages : 6
Points : 0
Points : 0
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 :
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
sebgre38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 11h21   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Pourquoi vouloir réinventer la roue, ce message existe déjà :
Code :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 13h28   #3
Invité de passage
 
Sebastien
Inscription : octobre 2009
Messages : 6
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : octobre 2009
Messages : 6
Points : 0
Points : 0
ma question porte sur un message "personnalisé" pas sur le message renvoyé par oracle.
sebgre38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 14h12   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h09   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
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
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h16   #6
Invité de passage
 
Sebastien
Inscription : octobre 2009
Messages : 6
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : octobre 2009
Messages : 6
Points : 0
Points : 0
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
sebgre38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h16.


 
 
 
 
Partenaires

Hébergement Web