Maison >base de données >tutoriel mysql >Comment corriger l'erreur ORA-00904 « Identifiant invalide » dans Oracle SQL ?

Comment corriger l'erreur ORA-00904 « Identifiant invalide » dans Oracle SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-17 08:47:13182parcourir

How to Fix the ORA-00904

Dépannage de l'erreur Oracle « ORA-00904 : Identifiant invalide »

L'erreur frustrante « ORA-00904 : Identifiant invalide » dans les bases de données Oracle provient généralement d'un référencement incorrect des objets de la base de données (tables ou colonnes). Cela implique souvent le respect de la casse et l'utilisation de guillemets doubles.

Examinons un exemple de requête de jointure interne :

<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>

L'erreur survient car la table "Team" et ses colonnes ("DEPARTMENT_CODE" et "Department_Name") peuvent être incohérentes. La nature sensible à la casse d'Oracle exige une correspondance exacte lorsque des guillemets doubles sont utilisés lors de la création d'un objet. L'utilisation de "Department_Code" au lieu de "DEPARTMENT_CODE" déclenchera l'erreur ORA-00904 :

<code class="language-sql">SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS
where Department_Code = 'BAH'
/
ERROR at line 2:
ORA-00904: "DEPARTMENT_CODE": invalid identifier

SQL> select count(*) from PS_TBL_DEPARTMENT_DETAILS
where "Department_Code" = 'BAH'
/

COUNT(*)
----------
0

SQL></code>

Éviter les guillemets doubles lors de la création de la table simplifie le référencement des objets, permettant un accès insensible à la casse :

<code class="language-sql">create table PS_TBL_DEPARTMENT_DETAILS
( company_code VARCHAR2(255),
company_name VARCHAR2(255),
Cost_Center_Number VARCHAR2(255))
;

select * from ps_tbl_department_details</code>

Bonne pratique : minimisez l'utilisation des guillemets doubles dans les scripts DDL pour éviter les problèmes de référencement sensibles à la casse et simplifier l'accès aux objets de base de donné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