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 de casse des noms d'objets


Sujet :

SQL Oracle

  1. #1
    Lucas Panny
    Invité(e)
    Par défaut Problème de casse des noms d'objets
    Bonjour,

    Je sais qu'en Oracle, les noms d'objets sont automatiquement mis en majuscule à la création sauf si c'est entre guillemets.
    Pour avoir alors des noms d'objets (tables, fields) à casse non tout en majuscule, je crée des tables en utilisant "". Le problème est alors lorsqu'on fait un select/update sur un champ, il faut toujours le mettre entre "" de même pour les tables, etc ex: select "FieldSac","System" from "Table1"
    Dernière modification par Lucas Panny ; 10/04/2008 à 10h27.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    oui... et ?

  3. #3
    Lucas Panny
    Invité(e)
    Par défaut
    Et oui, mon 1er post n'est pas assez clair !!

    Faut-il toujours mettre les guillemets avec ces noms créés avec entre "" ? Car sous MSSQL par ex, un nom créé avec [] peut être utilisé avec toute casse !
    Ce serait un vrai capharnaum pour moi de modifier toute ma base en utilisant ces ""

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    oui, il faut les guillemets

  5. #5
    Lucas Panny
    Invité(e)
    Par défaut
    Donc je suis dans le pétrin car faire comme ça avec plus de 400 tables,
    Car les noms d'objets de cette base ne doivent pas être totalement majuscules !!
    Cette fonctionnalité d'Oracle n'est pas du tout en standard avec SQL non ? pourquoi faire un select sur un champ par ex nécessitera un respect de la casse lors de création du champ

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Mais ce n'est pas grave, sur oracle si tu fais même en écrivant matable en minuscules, ça marchera quand-même
    Pourquoi as-tu besoin que les noms d'objets ne soient pas tous en majuscules ?
    Les guillemets peuvent être utiles si tu as des caractères à la con dans le nom des tables, ou des mots clés comme nom de table, c'est tout
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Tu peux créer des synonymes mais c'est quand même plus simple de laisser les nom de tables et colonnes en majuscule

  8. #8
    Lucas Panny
    Invité(e)
    Par défaut
    synonyme !!
    Une nlle chose pour moi mais je vais y faire quelques recherches !!

  9. #9
    Lucas Panny
    Invité(e)
    Par défaut
    Citation Envoyé par scheu Voir le message
    même en écrivant matable en minuscules, ça marchera quand-même
    Pourquoi as-tu besoin que les noms d'objets ne soient pas tous en majuscules ?
    Les guillemets peuvent être utiles si tu as des caractères à la con dans le nom des tables, ou des mots clés comme nom de table, c'est tout
    On ne peut pas écrire le nom de table comme ça s'il a été créé comme "matable" avec les guillemets et en minuscule !!

    A propos des synonymes, intéressant mais ça complique les choses

  10. #10
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par Lucas Panny Voir le message
    A propos des synonymes, intéressant mais ça complique les choses
    bah ça ajoute la création de synonyme mais après c'est beaucoup plus simple dans les requêtes

  11. #11
    Lucas Panny
    Invité(e)
    Par défaut
    ça ajoute la création de synonyme mais après c'est beaucoup plus simple dans les requêtes
    C'est que les noms de champs et de contraintes ne sont pas seulement utilisés en requête mais ils seront captés par "select column_name, ... from all_tab_columns ..." pour être utilisés dans un autre langage c'est pour cela l'intérêt des casses

  12. #12
    Lucas Panny
    Invité(e)
    Par défaut
    Le problème avec les synonymes c'est qu'il n'est pas utilisable pour SELECT et DESCRIBE.
    De plus, je l'utilise avec mon prog VB qui utilise ADO donc

  13. #13
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bien sûr que c'est utilisable pour le SELECT... à quoi d'autre sinon

  14. #14
    Lucas Panny
    Invité(e)
    Par défaut
    Je retire ce que j'ai dit sur SELECT mais sur DESCRIBE et autre non
    Mais le synonyme peut être plus long que 30 caractères mais il sera inutilisable dans un SELECT ??
    ORA-00972: identifier is too long

  15. #15
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    évidemment, sinon faut mettre des guillemets comme pour le respect de la casse.

    Et pour DESC c'est également faux :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    SQL> create synonym toto for v$session;
     
    Synonym created.
     
    SQL> desc toto
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     SADDR                                              RAW(4)
     SID                                                NUMBER
     SERIAL#                                            NUMBER
     AUDSID                                             NUMBER
     PADDR                                              RAW(4)
     USER#                                              NUMBER
     USERNAME                                           VARCHAR2(30)
     COMMAND                                            NUMBER
     OWNERID                                            NUMBER
     TADDR                                              VARCHAR2(8)
     LOCKWAIT                                           VARCHAR2(8)
     STATUS                                             VARCHAR2(8)
     SERVER                                             VARCHAR2(9)
     SCHEMA#                                            NUMBER
     SCHEMANAME                                         VARCHAR2(30)
     OSUSER                                             VARCHAR2(30)
     PROCESS                                            VARCHAR2(12)
     MACHINE                                            VARCHAR2(64)
     TERMINAL                                           VARCHAR2(16)
     PROGRAM                                            VARCHAR2(64)
     TYPE                                               VARCHAR2(10)
     SQL_ADDRESS                                        RAW(4)
     SQL_HASH_VALUE                                     NUMBER
     PREV_SQL_ADDR                                      RAW(4)
     PREV_HASH_VALUE                                    NUMBER
     MODULE                                             VARCHAR2(48)
     MODULE_HASH                                        NUMBER
     ACTION                                             VARCHAR2(32)
     ACTION_HASH                                        NUMBER
     CLIENT_INFO                                        VARCHAR2(64)
     FIXED_TABLE_SEQUENCE                               NUMBER
     ROW_WAIT_OBJ#                                      NUMBER
     ROW_WAIT_FILE#                                     NUMBER
     ROW_WAIT_BLOCK#                                    NUMBER
     ROW_WAIT_ROW#                                      NUMBER
     LOGON_TIME                                         DATE
     LAST_CALL_ET                                       NUMBER
     PDML_ENABLED                                       VARCHAR2(3)
     FAILOVER_TYPE                                      VARCHAR2(13)
     FAILOVER_METHOD                                    VARCHAR2(10)
     FAILED_OVER                                        VARCHAR2(3)
     RESOURCE_CONSUMER_GROUP                            VARCHAR2(32)
     PDML_STATUS                                        VARCHAR2(8)
     PDDL_STATUS                                        VARCHAR2(8)
     PQ_STATUS                                          VARCHAR2(8)
     CURRENT_QUEUE_DURATION                             NUMBER
     CLIENT_IDENTIFIER                                  VARCHAR2(64)

  16. #16
    Lucas Panny
    Invité(e)
    Par défaut
    Une fois de plus, j'avais tort (sur DESC !!)

    Puisqu'Oracle ne supporte pas l'utilisation de synonymes plus longs que 30chars, ça ne me sert à rien donc (synonym) !!! Un ami m'a dit de toujours utiliser des noms en majuscule en Oracle pour faciliter la tâche donc je m'y met

  17. #17
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    la casse n'a pas d'importance et si tu utilises des noms plus long que 30 caractères tu auras le même problème... j'ai l'impression que tu n'as pas saisi l'origine du souci

  18. #18
    Lucas Panny
    Invité(e)
    Par défaut
    .. j'ai l'impression que tu n'as pas saisi l'origine du souci
    Si j'ai saisi mais le synonyme n'est pas bon dans mon cas s'il ne peut pas être plus de 30 kres car j'ai des noms de tables plus longs; en fait, j'aime que les noms d'objets ont du sens

  19. #19
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Par défaut
    c'est bon ton synomyme; mais il n'a resolu le problème qu'au niveau du nom de la table reste encore celui au niveau des colonnes.
    Autrement dit la voie des synonymes est equivalente à celle de du LATER TABLE qui pourrait même être plus efficace avec un bon script.
    A+

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/10/2012, 14h14
  2. Problème d'encodage des noms de fichiers
    Par fort88 dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2009, 17h36
  3. Réponses: 1
    Dernier message: 04/06/2008, 18h19
  4. Réponses: 4
    Dernier message: 21/04/2008, 11h34
  5. Comment avoir des noms d'objets différents ?
    Par adn013 dans le forum Langage
    Réponses: 6
    Dernier message: 11/06/2007, 16h46

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