Идентификатор ORA-00972 - слишком длинное имя столбца псевдонима - PullRequest
65 голосов
/ 21 июня 2010

У меня такой запрос:

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

возвращает ошибку Идентификатор ORA-00972 слишком длинный , есть ли какой-нибудь совет, чтобы он работал без сокращения псевдонима?

Спасибо

Ответы [ 6 ]

88 голосов
/ 21 июня 2010

Нет, до версии Oracle 12.2 идентификаторы не должны превышать 30 символов в длину.См. справочник по языку Oracle SQL .

Однако начиная с версии 12.2 могут иметь длину до 128 байт. (Примечание: байты, а не символы).

11 голосов
/ 12 августа 2015

Ошибка также вызвана причудливой обработкой кавычек и одиночных кавычек.Чтобы включить одинарные кавычки в запрос, используйте удвоенные одинарные кавычки.

Это не будет работать

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

или это либо

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

но это работает

select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
4 голосов
/ 19 апреля 2013

Объект, в котором Oracle хранит имя идентификаторов (например, имена таблиц пользователя хранятся в таблице с именем USER_TABLES, а имена столбцов пользователя хранятся в таблице с именем USER_TAB_COLUMNS), имеют столбцы NAME(например, TABLE_NAME в USER_TABLES) размера Varchar2 (30) ... и он одинаков для всех системных таблиц объектов или идентификаторов -

 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
3 голосов
/ 04 декабря 2014

Я использую систему отчетов Argos в качестве внешнего интерфейса, а Oracle - сзади. Я только что столкнулся с этой ошибкой, и она была вызвана строкой с двойной кавычкой в ​​начале и одинарной кавычкой в ​​конце. Замена двойной кавычки одной решает проблему.

0 голосов
/ 21 февраля 2017

Если вы недавно обновили springboot до версии 1.4.3, вам может потребоваться внести изменения в файл yml:

yml в 1.3:

jpa: 
  hibernate: 
    namingStrategy: org.hibernate.cfg.EJB3NamingStrategy

yml в 1.4.3:

jpa: 
  hibernate: 
    naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
0 голосов
/ 17 января 2017

Как уже упоминали другие, имена в Oracle SQL должны быть не более 30 символов.Я бы добавил, что это правило применяется не только к именам таблиц, но и к именам полей.Итак, вот оно.

...