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 :

Problème avec une procédure


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 390
    Points : 222
    Points
    222
    Par défaut Problème avec une procédure
    Bonjour,


    Je souhaite, via une procédure, obtenir les commentaires de mes colonnes.

    Problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    PROCEDURE MaProcedure(matable varchar2)
     
    CURSOR down_cur IS SELECT COLUMN_NAME,COMMENTS 
    FROM ALL_COL_COMMENTS 
    WHERE table_name=matable
     
    etc ....
    il faudrait que la syntaxe soit : table_name='matable'

    Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table_name= '''' || matable || '''''
    çà ne marche pas non plus !

    Merci d'avance pour votre aide.

    A+

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE OR EPLACE PROCEDURE MaProcedure(matable IN varchar2)
    IS
    CURSOR
    ....
    Le reste est bon, pas besoin de rajouter des '
    Attention à la casse !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 390
    Points : 222
    Points
    222
    Par défaut
    çà ne marche pas, il retourne rien.

    J'ai vraiment l'impression qu'il faut avoir les quotes.

    Je me trompe ou pas ?

  4. #4
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Peux-tu nous envoyer ta fonction complète ?

    LBO72.

  5. #5
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Peut-être un problème de casse ou bien le nom de la table est mal renseignée
    Tu peux essayer comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE Upper(Table_name) = Upper(matable)
    OR Upper(table_name) like '%' || upper(matable) ||'%'

  6. #6
    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
    Citation Envoyé par Thomad Voir le message
    çà ne marche pas, il retourne rien.

    J'ai vraiment l'impression qu'il faut avoir les quotes.

    Je me trompe ou pas ?
    Oui tu te trompes : Pas besoin de rajouter des quotes pour tes paramaètres déclarés en VARCHAR2.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 390
    Points : 222
    Points
    222
    Par défaut
    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
     
    CREATE OR REPLACE
    PROCEDURE MaProcedure(matable in varchar2) IS
     
    vRequete VARCHAR2(300);
     
    CURSOR down_cur IS SELECT COLUMN_NAME,COMMENTS FROM ALL_COL_COMMENTS WHERE table_name = matable ;
     
    BEGIN
     
      for data_enrg in down_cur loop
     
         vRequete := 'COMMENT ON COLUMN TABLEDEST.' || data_enrg.COLUMN_NAME || ' IS '||''''|| replace(data_enrg.COMMENTS,'''', '''''') ||'''' ;
     
         dbms_output.put_line(vRequete);
     
         execute immediate vRequete ;
     
      end loop ;
     
      COMMIT ;
     
    END;

  8. #8
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Y'a-t-il vraiement des commentaires pour les colonnes de ta table ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fait 
    Select * from all_col_comments where table_name = 'TaTable';
    LBO72.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 390
    Points : 222
    Points
    222
    Par défaut
    Effectivement si je mets le nom en "dur", dans la procédure, çà ne marche pas non plus.

    Cette table est dans un autre schéma. J'ai créé un database link.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * from all_col_comments where table_name = 'TaTable';
    en ligne de commande fonctionne.

    Le fait qu'elle soit dans un autre schéma, c'est peut-être çà le problème !

  10. #10
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    si elle est dans un autre schéma, ajoute une clause
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    And owner = 'LE_SCHEMA_PROPRIO'

Discussions similaires

  1. [C] Probléme avec une procédure
    Par Sieldev dans le forum SDL
    Réponses: 10
    Dernier message: 18/11/2007, 12h54
  2. Petit problème avec une procédure stockée
    Par Poulain dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/05/2007, 18h58
  3. [VB.NET 2.0] - Problème avec une procédure stockée
    Par Khrysby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h25
  4. problème avec une procédure recursive
    Par vbcasimir dans le forum SQL
    Réponses: 1
    Dernier message: 10/06/2005, 16h38
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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