Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00904 durante l'inserimento/l'esecuzione di query sui dati dalle tabelle

Sembra che tu abbia specificato i nomi delle colonne tra virgolette nel tuo DDL.

Oracle considera gli identificatori tra virgolette come una distinzione tra maiuscole e minuscole, quindi la creazione di una tabella con un nome di colonna come "corpo" o "anno" non risolverà il corpo o l'anno nella query, perché quando ometti le virgolette, considera la variante maiuscola.

Quindi quando hai questo:

 create table driver_case (registration varchar2(60), 
                      make varchar2(60),
                      model varchar2(60),
                      gvw number,
                      "year" number, 
                      "body" varchar2(60));

e poi prova a fare

select year, body from driver_case

quindi Oracle prova a trovare la colonna "YEAR", "BODY" (ricorda, senza un identificatore senza virgolette viene convertito in maiuscolo) che non è la stessa di "year", "body" nella tua tabella.

Le vostre soluzioni?

  • Non menzionare i nomi delle colonne tra virgolette nel DDL
  • Se ignori il punto precedente, devi menziona i nomi delle colonne tra virgolette in tutte le tue istruzioni DML.

Dimostro il punto precedente in questo SQL Fiddle