j'ai une question comme celle-ci:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
il renvoie l'erreur L'identificateur ORA-00972 est trop long , y a-t-il une astuce pour que cela fonctionne sans raccourcir l'alias?
Merci
Non, avant Oracle version 12.2, les identificateurs ne devaient pas dépasser 30 caractères. Voir la Référence du langage Oracle SQL .
Cependant, à partir de la version 12.2, leur longueur peut atteindre 128 octets. (Remarque: octets, pas de caractères).
L'erreur est également causée par un traitement bizarre des guillemets et des qutoes simples. Pour inclure des guillemets simples dans la requête, utilisez doubled guillemets simples.
Ça ne marchera pas
select dbms_xmlgen.getxml("Select ....") XML from dual;
ou ce soit
select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;
mais ça marche
select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
L'objet où Oracle stocke le nom des identificateurs (par exemple, les noms de table de l'utilisateur sont stockés dans la table nommée USER_TABLES et les noms de colonne de l'utilisateur sont stockés dans la table nommée USER_TAB_COLUMNS), ont les colonnes NAME (par exemple, TABLE_NAME dans USER_TABLES) de taille Varchar2 (30) ... et uniforme dans toutes les tables système d’objets ou d’identificateurs -
DBA_ALL_TABLES ALL_ALL_TABLES USER_ALL_TABLES
DBA_PARTIAL_DROP_TABS ALL_PARTIAL_DROP_TABS USER_PARTIAL_DROP_TABS
DBA_PART_TABLES ALL_PART_TABLES USER_PART_TABLES
DBA_TABLES ALL_TABLES USER_TABLES
DBA_TABLESPACES USER_TABLESPACES TAB
DBA_TAB_COLUMNS ALL_TAB_COLUMNS USER_TAB_COLUMNS
DBA_TAB_COLS ALL_TAB_COLS USER_TAB_COLS
DBA_TAB_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS
DBA_TAB_HISTOGRAMS ALL_TAB_HISTOGRAMS USER_TAB_HISTOGRAMS
DBA_TAB_MODIFICATIONS ALL_TAB_MODIFICATIONS USER_TAB_MODIFICATIONS
DBA_TAB_PARTITIONS ALL_TAB_PARTITIONS USER_TAB_PARTITIONS
J'utilise le système de rapports Argos en tant que serveur frontal et Oracle à l'arrière. Je viens de rencontrer cette erreur et cela est dû à une chaîne avec un guillemet double au début et un guillemet simple à la fin. Remplacer le guillemet double par un simple a résolu le problème.
Si vous avez récemment mis à niveau springboot vers la version 1.4.3, vous devrez peut-être modifier le fichier yml:
yml en 1.3:
jpa:
hibernate:
namingStrategy: org.hibernate.cfg.EJB3NamingStrategy
yml en 1.4.3:
jpa:
hibernate:
naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl