昨天我在客户Oracle 10g实例上偶然发现了一些奇怪的行为。我写的一些程序给了我一个invalid identifier
异常但在我的Oracle 11g实例上运行正常。
相关查询如下:
select b.b.v_col_b
from tbla a
left join tblb b on a.pk_col_a = b.fk_a;
请注意查询的 b.b.v_col_b
部分。从left join
更改为inner join
最终导致ORA-00904: "B"."B"."V_COL_B": invalid identifier
例外,但是:
编辑:添加了表格定义:
create table tbla (
pk_col_a int primary key,
v_col_a varchar2(50));
create table tblb (
pk_col_b int primary key,
fk_a int,
v_col_b varchar2(50));
Edit2:正如@LalitKumarB所提到的那样,这似乎只发生在Oracle 11g上
答案 0 :(得分:0)
ORA-00904:" B"。" B"。" V_COL_B":无效标识符
在SQL中,限定标识符 X.Y.Z涉及方案X,表Y和列Z.而简单的Y.Z表示表Y,列Z.
然后调用X.Y.Z标识符可能会产生误导,但在计算机科学中也不会太不规范。
关于您遇到的错误行为,我说不出多少。