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

SQL Oracle Discussion :

Oracle SQL Developer - La variable attachée (bind variable) "idxName" est NON DECLAREE


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut 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 : 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;
    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
     
    La variable attachée (bind variable) "idxName" est NON DECLAREE
    bloc anonyme terminé
    J'ai essayé plusieurs syntaxes, notamment celle-ci
    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;
    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.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Les : ne servent que pour faire du bind variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute immediate 'select * from dual where 1 = :var' USING IN mavariable
    Une variable est nommée puis référencée avec le même nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Tu as été plus rapide que moi McM.

    Le temps de poster mon message j'avais trouvé la solution également.

    Merci pour l'explication.

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

Discussions similaires

  1. [Oracle SQL Developer] Découvrez le nouvel outil d'Oracle
    Par Jaouad dans le forum Sql Developer
    Réponses: 94
    Dernier message: 30/03/2011, 13h09
  2. Oracle sql developer
    Par nita2006 dans le forum Sql Developer
    Réponses: 1
    Dernier message: 08/06/2009, 11h52
  3. EXECUTE IMMEDIATE et Compilation sous Oracle Sql Developer
    Par abdelhamidem dans le forum PL/SQL
    Réponses: 3
    Dernier message: 16/09/2008, 17h01
  4. Réponses: 2
    Dernier message: 25/09/2007, 08h55
  5. Oracle Sql Developer et CVS
    Par dgl33 dans le forum Sql Developer
    Réponses: 5
    Dernier message: 25/07/2007, 09h54

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