我的查询如下:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
它返回错误 ORA-00972标识符太长,是否有任何提示使其工作而不缩短别名?
由于
答案 0 :(得分:84)
不,在Oracle 12.2版之前,标识符的长度不得超过30个字符。请参阅the Oracle SQL Language Reference。
但是,from version 12.2 they can be up to 128 bytes long.(注意:字节,而不是字符)。
答案 1 :(得分:11)
错误也是由引用和单个qutoes的奇怪处理引起的。要在查询中包含单引号,请使用 doubled 单引号。
这不起作用
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;
答案 2 :(得分:4)
Oracle存储标识符名称的对象(例如,用户的表名存储在名为USER_TABLES的表中,用户的列名存储在名为USER_TAB_COLUMNS的表中)具有NAME列(例如USER_TABLES中的TABLE_NAME),大小为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 :(得分:3)
我使用Argos报告系统作为前端,而后者使用Oracle。我刚刚遇到这个错误,它是由一个在开头带有双引号的字符串和结尾的单引号引起的。用单个替换双引号解决了这个问题。
答案 4 :(得分:0)
如果您最近将springboot升级到1.4.3,则可能需要更改yml文件:
1.3中的yml:
jpa:
hibernate:
namingStrategy: org.hibernate.cfg.EJB3NamingStrategy
1.4.3中的yml:
jpa:
hibernate:
naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
答案 5 :(得分:-2)
正如其他人所提到的,Oracle SQL中的名称必须小于或等于30个字符。我想补充一点,这条规则不仅适用于表名,也适用于字段名。所以你有它。