92 votes

ORA-00972 l'identifiant est un nom de colonne alias trop long

J'ai une requête du type :

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name

il renvoie l'erreur ORA-00972 l'identifiant est trop long Est-ce qu'il y a une astuce pour que cela fonctionne sans raccourcir l'alias ?

Gracias

121voto

Tony Andrews Points 67363

Non, avant la version 12.2 d'Oracle, les identifiants ne sont pas autorisés à dépasser 30 caractères. Voir la référence du langage Oracle SQL .

Cependant, à partir de la version 12.2, ils peuvent avoir une longueur maximale de 128 octets. (Note : octets, pas caractères).

13voto

mike cummings Points 131

L'erreur est également due à une gestion bizarre des guillemets et des guillemets simples. Pour inclure des guillemets simples dans la requête, utilisez doublé guillemets simples.

Ça ne marchera pas.

select dbms_xmlgen.getxml("Select ....") XML from dual;

ou ceci soit

select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;

mais ceci fonctionne

select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;

5voto

Saptarshi Points 1

L'objet où Oracle stocke le nom des identifiants (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 c'est uniforme à travers toutes les tables système d'objets ou d'identifiants...

 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

5voto

John Points 51

J'utilise le système de reporting Argos comme front-end et Oracle comme back-end. Je viens de rencontrer cette erreur, qui est due à une chaîne de caractères comportant une double citation au début et une simple citation à la fin. Remplacer le guillemet double par un guillemet simple a résolu le problème.

1voto

Will Marcouiller Points 11649

S'il y avait eu un moyen, ce type l'aurait su et aurait proposé une solution.

Il n'y a aucun moyen de le rendre plus long.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X