web-dev-qa-db-fra.com

ORA-00972 identifiant trop long alias nom de colonne

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

58
mcha

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).

81
Tony Andrews

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;
11
mike cummings

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
4
Saptarshi

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.

3
John

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
0
NiTiN