Oracle SQL Developer - La variable attachée (bind variable) "idxName" est NON DECLAREE
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:
Code:
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; |
Lorsque je teste ce script, j'ai le message d'erreur suivant:
Code:
1 2 3
|
La variable attachée (bind variable) "idxName" est NON DECLAREE
bloc anonyme terminé |
J'ai essayé plusieurs syntaxes, notamment celle-ci
Code:
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; |
Mais rien n'y fait. (même en enlevant les : dans le dernier cas.
J'ai toujours le même message d'erreur.
Pourriez-vous éclairer ma lanterne et m'indiquer ou est mon erreur??
Par avance merci.