ORA-00918: coloana specificata ambiguu, dar care coloana?

Jeff Smith: Titlul meu original a fost, '...dar ce coloana?!?' dar a trebuit sa-l schimb pentru scopuri SEO si, bineinteles, unii dintre voi aveti copii mici.

Acesta a fost un exemplu dintre multe in care mesajele noastre de eroare ale bazei de date Oracle erau mai putin prietenoase pentru utilizatori sau dezvoltatori.

Sa ne uitam la un exemplu:

EMPLOYEES si DEPARTMENTS. Ambele tabele au un camp DEPARTMENT_ID.

1.png

Deci, daca am rula aceasta interogare...

select *
from employees, departments
where department_id = department_id;

Baza de date ar spune, ei bine... nu pot face asta prea mult, pentru ca pentru clauza dvs. de predicat, nu stiu CU CE coloana department_id doriti sa lucrati.

Dar nu ne-ar spune ca problema este cu DEPARTMENT_ID. Ar spune ceva de genul acesta –

ORA-00918: column ambiguously defined
00918. 00000 - "%s: column ambiguously specified - appears in %s and %s"

Acum, aceasta este destul de usor de inteles, cand exista doar O SINGURA clauza de predicat, dar ce se intampla daca aveti... 30 de clauze de predicat? Care referinta la coloana cauzeaza problema???

23ai aduce mesaje de eroare mai inteligente si mai clare

Asteptati, este 'clearer' un cuvant?

Iata ce revine ruland exact aceeasi interogare pe o baza de date 23ai.

2.png

ORA-00918: DEPARTMENT_ID: column ambiguously specified - appears in DEPARTMENTS and EMPLOYEES
Un nume de coloana utilizat intr-o imbinare a fost definit in mai multe tabele si a fost referit ambiguu. Intr-o >imbinare, orice nume de coloana care apare in mai multe dintre tabele trebuie sa fie prefixat cu numele tabelului sau >aliasul tabelului atunci cand este referit.
Eroare la Linia: 3 Coloana: 23

Cred ca putem spune subiectiv ca acesta este pur si simplu un mesaj de eroare mai bun. Si linia 3 coloana 23, este locul exact al acestui identificator sau coloana.

3.png

Documentatie oficiala, 19c vs 23ai

Iata un site de referinta util unde puteti vedea cum arata aceste mesaje de eroare ORA 'inainte' si 'dupa', si am actualizat cateva sute dintre ele pentru a fi mai utile..

4.png

Sursa