Идентификатор ORA-00972-это слишком длинное имя столбца псевдонима
У меня есть запрос :
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
он возвращает ошибку идентификатор ORA-00972 слишком длинный, есть ли совет, чтобы заставить его работать, не делая псевдоним короче?
спасибо
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.EJB3NamingStrategyyml в 1.4.3:
jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Как упоминали другие, имена в Oracle SQL должны быть меньше или равны 30 символам. Я бы добавил, что это правило применяется не только к именам таблиц, но и к именам полей. Так что у вас есть.
Comments