Wczoraj natknąłem się na dziwne zachowanie na przykładzie Oracle 10g klientów. Niektóre procedury, które napisałem, dały mi wyjątek invalid identifier
, ale działały dobrze na moich instancjach Oracle 11g.Podwójny/losowy alias w klauzuli select na Oracle 11g nie generuje wyjątku wyjątku identyfikatora
Stosowne zapytanie było coś jak następuje:
select b.b.v_col_b
from tbla a
left join tblb b on a.pk_col_a = b.fk_a;
Podniesione uwagę na b.b.v_col_b
część zapytania. Zmiana z left join
do inner join
czy wreszcie podnieść ORA-00904: "B"."B"."V_COL_B": invalid identifier
wyjątek, ale:
- Czy to nie jest błąd składni?
- Czy ktoś może wyjaśnić to zachowanie?
Demo pracy można znaleźć na sqlfiddle
EDIT: Dodano definicję tabeli:
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: AS @ LalitKumarB jest wymienione to tylko wydaje się stać na Oracle 11g
wybiera również: 'wybrać k.b.v_col_b z tbla lewo dołączyć tblb b na a.pk_col_a = b.fk_a;' Weird –
więc masz kolumna o nazwie 'b.v_col_b'? – Arion
@Arion, nie, zobacz skrzypce ... –