Maison >base de données >tutoriel mysql >Pourquoi ma requête Oracle aboutit-elle à ORA-00904 : identifiant invalide ?

Pourquoi ma requête Oracle aboutit-elle à ORA-00904 : identifiant invalide ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 08:42:09872parcourir

Why Does My Oracle Query Result in ORA-00904: Invalid Identifier?

ORA-00904 : Analyse d'erreur d'identifiant non valide

Description du problème :

Lors de l'exécution d'une requête de jointure interne dans la base de données Oracle, l'erreur suivante se produit :

<code class="language-sql">ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier</code>

Cause fondamentale :

La cause première de l'erreur est l'utilisation de guillemets doubles dans le nom de la table et le nom de la colonne dans la requête. Oracle Database exige que les noms d'objet soient en lettres majuscules ou sans guillemets.

Solution :

Pour résoudre ce problème, supprimez les guillemets doubles des noms de table et de colonne dans la requête et n'utilisez pas non plus de guillemets doubles lors de la création de la table dans le script DDL.

La requête SQL correcte est la suivante :

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID</code>

Évitez d'utiliser des guillemets doubles dans les scripts DDL :

La meilleure pratique consiste à éviter d'utiliser des guillemets doubles dans les scripts DDL. Il est recommandé d'utiliser un nom en majuscules :

<code class="language-sql">CREATE TABLE HRMS.PS_TBL_DEPARTMENT_DETAILS
(
  Company_Code VARCHAR2(255),
  Company_Name VARCHAR2(255),
  Sector_Code VARCHAR2(255),
  Sector_Name VARCHAR2(255),
  Business_Unit_Code VARCHAR2(255),
  Business_Unit_Name VARCHAR2(255),
  Department_Code VARCHAR2(255),
  Department_Name VARCHAR2(255),
  HR_ORG_ID VARCHAR2(255),
  HR_ORG_Name VARCHAR2(255),
  Cost_Center_Number VARCHAR2(255)
)</code>

Cette approche offre une plus grande flexibilité et évite les erreurs potentielles dues à un boîtier incohérent. Notez que les colonnes " " redondantes dans l'exemple DDL ont été supprimées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn