Идентификатор ORA-00972-это слишком длинное имя столбца псевдонима



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



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


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



спасибо

885   6  

6 ответов:

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

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

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

Это не сработает

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;

объект, в котором Oracle хранит имена идентификаторов (например, имена таблиц пользователя хранятся в таблице с именем USER_TABLES, а имена столбцов пользователя хранятся в таблице с именем USER_TAB_COLUMNS), имеет столбцы имен(например, 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

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

Если вы недавно обновили 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

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

Comments

    Ничего не найдено.