Oracle 11g 无效标识符错误

Posted

技术标签:

【中文标题】Oracle 11g 无效标识符错误【英文标题】:Oracle 11g invalid identifier error 【发布时间】:2012-09-10 12:51:28 【问题描述】:

此查询适用于 Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi 但不是 Oracle Database 11g 版本 11.2.0.1.0 - 64 位生产

select * 
  from inb_dosya_turu dosya_turu
 where dosya_turu.adi like 'S%'
   or dosya_turu.id in (select 350 from dual)

有什么问题?

【问题讨论】:

inb_dosya_turu 是否存在,是否有adi varchar2id number 列? @muratto12:它会给出错误消息吗?如果是,什么信息?还是返回意外数据?如果是,您期望什么数据,您会得到什么?请更具体。 在什么情况下不起作用?请描述行为,包括任何错误消息。 为什么是or dosya_turu.id in (select 350 from dual) 而不是or dosya_turu.id = 350or dosya_turu.id in (350)?只是好奇 这些查询没有问题。我敢打赌,你的描述中缺少一些东西。将“或”更改为“和”应该不会影响您是否获得 ORA-00904。 【参考方案1】:

我意识到这个问题是由于语言设置而发生的。 语言设置的脚本如下。 升级 11.2.0.3 后,脚本开始正常工作。 我将查询更改为在 SCOTT 模式中查询

alter session set nls_sort = 'TURKISH_AI';
alter session set nls_comp = 'linguistic';

select * from SCOTT.BONUS bonusa
where bonusa.ename like 'S%'
or bonusa.JOB in (select 350 from dual) 

【讨论】:

以上是关于Oracle 11g 无效标识符错误的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11g ORA-00904 中的抽象数据类型:标识符无效

Oracle,无效标识符错误

oracle 中的 AWR 报告

Oracle 无效标识符错误

oracle 忽略子查询中的无效标识符错误

奇怪的 Oracle SQL“无效标识符”错误