Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00904 lors de l'insertion/interrogation de données à partir de tables

On dirait que vous avez spécifié les noms de colonne sous guillemets dans votre DDL.

Oracle considère les identifiants sous guillemets comme sensibles à la casse, donc la création d'une table avec un nom de colonne comme "body" ou "year" ne résoudra pas le corps ou l'année dans votre requête, car lorsque vous omettez les guillemets, il considère la variante majuscule.

Alors quand vous avez ceci :

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

puis essayez de faire

select year, body from driver_case

puis Oracle essaie de trouver la colonne "YEAR", "BODY" (rappelez-vous, sans un identifiant sans guillemets est converti en majuscule) qui n'est pas la même que "year", "body" dans votre table.

Vos solutions ?

  • Ne mentionnez pas les noms de colonnes entre guillemets dans le DDL
  • Si vous ne tenez pas compte du point ci-dessus, vous devez mentionnez les noms de colonne entre guillemets dans toutes vos instructions DML.

Je démontre le point ci-dessus dans ce SQL Fiddle