Bonjour à tous.
Etant débutant sous oracle, je dois réaliser un script de normalisation des noms d'index.
Pour ce faire, j'ai écrit le script suivant:
Lorsque je teste ce script, j'ai le message d'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SET SERVEROUTPUT ON; Declare idxName Varchar2(30); Begin SELECT ui.index_name into :idxName from user_indexes ui, user_ind_columns uic where ui.index_name = uic.index_name and ui.table_name = uic.table_name and ui.table_name = 'MA_TABLE' and uic.column_name = 'MA_COLONNE'; -- Si je suis la c'est qu'un index existe Execute Immediate 'drop INDEX '||:idxName ; Execute Immediate 'CREATE INDEX IDX_1 ON MA_TABLE (MA_COLONNE)' ; Exception WHEN NO_DATA_FOUND then begin Execute Immediate 'CREATE INDEX IDX_1 ON MA_TABLE(MA_COLONNE)' ; end; End;
J'ai essayé plusieurs syntaxes, notamment celle-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 La variable attachée (bind variable) "idxName" est NON DECLAREE bloc anonyme terminé
Mais rien n'y fait. (même en enlevant les : dans le dernier cas.
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 SET SERVEROUTPUT ON; Declare idxName Varchar2(30); sqlString Varchar2(255) := 'drop INDEX :indexName'; Begin SELECT ui.index_name into :idxName from user_indexes ui, user_ind_columns uic where ui.index_name = uic.index_name and ui.table_name = uic.table_name and ui.table_name = 'MA_TABLE ' and uic.column_name = 'MA_COLONNE'; -- Si je suis la c'est qu'un index existe Execute Immediate sqlString USING :idxName ; Execute Immediate 'CREATE INDEX IDX_1 ON MA_TABLE (MA_COLONNE)' ; Exception WHEN NO_DATA_FOUND then begin Execute Immediate 'CREATE INDEX IDX_1 ON MA_TABLE (MA_COLONNE)' ; end; End;
J'ai toujours le même message d'erreur.
Pourriez-vous éclairer ma lanterne et m'indiquer ou est mon erreur??
Par avance merci.
Partager