sql >> Databáze >  >> RDS >> Oracle

ORA-00904 při vkládání/dotazování dat z tabulek

Zdá se, že jste zadali názvy sloupců v uvozovkách v DDL.

Oracle považuje identifikátory v uvozovkách za rozlišující malá a velká písmena, takže vytvoření tabulky s názvem sloupce jako „tělo“ nebo „rok“ nevyřeší tělo nebo rok v dotazu, protože když vynecháte uvozovky, zohledňuje variantu s velkými písmeny.

Takže když máte toto:

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

a poté zkuste provést

select year, body from driver_case

pak se Oracle pokusí najít sloupec "YEAR", "BODY" (nezapomeňte, že bez identifikátoru bez uvozovek se převede na velká písmena), který není stejný jako "year", "body" ve vaší tabulce.

Vaše řešení?

  • Neuvádějte názvy sloupců v uvozovkách v DDL
  • Pokud ignorujete výše uvedený bod, pak musíte uvádějte názvy sloupců v uvozovkách ve všech svých prohlášeních DML.

Výše uvedený bod demonstruji v tomto SQL Fiddle



  1. Nekonečná smyčka ve funkci spouštění

  2. Proč se mi při importu CSV zobrazuje neplatná vstupní syntaxe pro typ integer v postgresql?

  3. Záloha SQL Server 2017 -3

  4. Uložená procedura generátoru náhodných čísel Oracle bez použití DBMS_RANDOM