我有一个像这样的查询:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
Run Code Online (Sandbox Code Playgroud)
它返回错误ORA-00972标识符太长,是否有任何提示使其工作而不使别名更短?
谢谢
Ton*_*ews 91
不,在Oracle 12.2版之前,标识符的长度不得超过30个字符.请参阅Oracle SQL语言参考.
但是,从版本12.2开始,它们最长可达128个字节.(注意:字节,而不是字符).
小智 11
错误也是由引用和单个qutoes的古怪处理引起的.要包含在查询的单引号,用加倍的单引号.
这不行
select dbms_xmlgen.getxml("Select ....") XML from dual;
Run Code Online (Sandbox Code Playgroud)
或者这个
select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;
Run Code Online (Sandbox Code Playgroud)
但这确实有效
select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
Run Code Online (Sandbox Code Playgroud)
Oracle 存储标识符名称的对象(例如用户的表名存储在名为 USER_TABLES 的表中,用户的列名存储在名为 USER_TAB_COLUMNS 的表中),具有 NAME 列(例如 TABLE_NAME在大小为 Varchar2(30) 的 USER_TABLES) 中......并且它在对象或标识符的所有系统表中都是统一的——
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
Run Code Online (Sandbox Code Playgroud)