Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-00904 beim Einfügen/Abfragen von Daten aus Tabellen

Anscheinend haben Sie die Spaltennamen unter Anführungszeichen in Ihrer DDL angegeben.

Oracle betrachtet Bezeichner unter Anführungszeichen als Groß-/Kleinschreibung. Wenn Sie also eine Tabelle mit einem Spaltennamen als „body“ oder „year“ erstellen, wird body oder year in Ihrer Abfrage nicht aufgelöst, da es die Großbuchstabenvariante berücksichtigt, wenn Sie die Anführungszeichen weglassen.

Wenn Sie also Folgendes haben:

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

und versuchen Sie dann,

zu tun
select year, body from driver_case

dann versucht Oracle, die Spalte "YEAR", "BODY" zu finden (denken Sie daran, dass ohne Bezeichner ohne Anführungszeichen in Großbuchstaben umgewandelt wird), die nicht mit "year", "body" in Ihrer Tabelle identisch ist.

Ihre Lösungen?

  • Erwähnen Sie keine Spaltennamen unter Anführungszeichen in der DDL
  • Wenn Sie den obigen Punkt missachten, dann müssen Sie Erwähnen Sie die Spaltennamen in allen Ihren DML-Anweisungen in Anführungszeichen.

Ich demonstriere den obigen Punkt in diesem SQL Fiddle