[Oracle]Nom objets tout en majuscule pourquoi [Résolu/Fermé]

Signaler
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
-
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
-
Bonjour,

Lorsque je crée des tables, procédures en minuscule par code sql sous Oracle, pourquoi ça devient tout en majuscule.
Si je fais un "select column_name from all_tab_columns where table_name = 'ma_table' ", je n'obtiens rien car le nom de table doit être majuscule pas comme je l'ai créée. Lorsque je mets au majuscule, les noms de colonnes résultant de cette requête sont aussi en majuscule, c'est la cata totale !!
Est-il possible d'éviter cette mise en majuscule ?

7 réponses

Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826
bonjour,

a priori non, tout est stocké en majuscule dans les tables système d'oracle

cela a pour but de faire que ma_table = MA_TABLE = Ma_Table peut importe comment tu écris dans tes ordre sql, ce sera toujours le même objet qui est référencé

cdt
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
14
vous pouvez utiliser les commandes UPPER et LOWER
select column_name from all_tab_columns where lower(table_name )= 'ma_table'
lower : pour méttre en miniscule
upper :pour mêttre en majuscule
Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826
il faudrait donc que tu utilises la fonction upper :

select column_name from all_tab_columns where table_name = upper('ma_table')
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016
14
mais non d'aprés ce que j'ai compris que tous les objets sans stoké en majuscule dans la base donc il doit utiliser la fonction lower pour les mêttre en miniscule et les comparé avec 'ma_table' biensur sa n'influe pas sur la base de données
Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826 >
Messages postés
773
Date d'inscription
samedi 20 octobre 2007
Statut
Membre
Dernière intervention
4 mars 2016

lower(table_name )= 'ma_table' <=> table_name = upper('ma_table')

mais l'utilisation du upper est plus logique car il fonctionnera quelle que soit la façon dont la chaine de caractère 'ma_table' (ou 'Ma_table', ou ...) est saisie dans un éditeur ou un source de programme
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
35
Je connais ces fonctions upper et lower mais certaines de mes tables ne sont ni totalement lower ni totalement upper par ex : CategTable !
Donc, tout est en majuscule dans Oracle, je vais m'y faire même si c'est la cata
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
35
En fait, si je crée la table en minuscule et en mettant entre guillemets, est-ce que ça deviendra en MAJUSCULE quand même ?
Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826
je te déconseille d'essayer, un jour dans une base, deux tables se sont retrouvées, dans les tables système de gestion des objets de la base avec un nom en minuscule (soit pas update direct dans les champs les tables system -une monstruosité- , soit par utilisation d'un outils externe à oracle qui ne respectait pas les règles)

il n'était plus possible de référencer ces objets, aucune commande sql ne fonctionnait dessus

donc ne touche pas à cela,
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
35
Si je comprends bien donc !
Le fait de mettre entre guillemet ne permet pas seulement d'avoir des noms d'objets avec espace sous ORACLE mais des noms d'objets avec minuscule aussi ??
Messages postés
32511
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 juillet 2021
7 826
non, je n'ai jamais essayé et ne le tenterai pas ! j'ignore comment cette situation était arrivée dans la base
Messages postés
311
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
23 avril 2019
35
En résumé, le problème avec la mise entre GUILLEMETS est délicat en Oracle. J'ai tenté l'expérience mais c'est affreux car il faudra toujours mettre entre guillemets ces noms d'objets dans toutes les situations (sauf si c'est totalement majuscule donc c'est comme si on les avait créer sans guillemets)