Ответ 1
Нет, до версии Oracle 12.2 идентификаторы не должны превышать 30 символов. См. справочник Oracle SQL Language.
Однако из версии 12.2 они могут иметь длину до 128 байтов. (Примечание: байты, а не символы).
У меня есть запрос вроде:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
он возвращает ошибку идентификатор ORA-00972 слишком длинный, есть ли подсказка, чтобы заставить ее работать, не сокращая псевдоним?
Спасибо
Нет, до версии Oracle 12.2 идентификаторы не должны превышать 30 символов. См. справочник Oracle SQL Language.
Однако из версии 12.2 они могут иметь длину до 128 байтов. (Примечание: байты, а не символы).
Ошибка также вызвана необычной обработкой кавычек и отдельных quto. Чтобы включить одинарные кавычки внутри запроса, используйте двойные одинарные кавычки.
Это не сработает
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), имеют столбцы 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
Я использую систему отчетности 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 символам. Я бы добавил, что это правило применяется не только к именам таблиц, но и к именам полей. Итак, у вас есть это.