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 varchar2
和id number
列?
@muratto12:它会给出错误消息吗?如果是,什么信息?还是返回意外数据?如果是,您期望什么数据,您会得到什么?请更具体。
在什么情况下不起作用?请描述行为,包括任何错误消息。
为什么是or dosya_turu.id in (select 350 from dual)
而不是or dosya_turu.id = 350
或or 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 无效标识符错误的主要内容,如果未能解决你的问题,请参考以下文章