Heim >Datenbank >MySQL-Tutorial >Warum führt meine Oracle-Abfrage zu ORA-00904: Ungültiger Bezeichner?

Warum führt meine Oracle-Abfrage zu ORA-00904: Ungültiger Bezeichner?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 08:42:09866Durchsuche

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

ORA-00904: Fehler beim Parsen eines ungültigen Bezeichners

Problembeschreibung:

Beim Ausführen einer Inner-Join-Abfrage in der Oracle-Datenbank tritt der folgende Fehler auf:

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

Grundursache:

Die Hauptursache des Fehlers ist die Verwendung doppelter Anführungszeichen im Tabellennamen und Spaltennamen in der Abfrage. Oracle Database erfordert, dass Objektnamen ausschließlich in Großbuchstaben oder ohne Anführungszeichen angegeben werden.

Lösung:

Um dieses Problem zu beheben, entfernen Sie die doppelten Anführungszeichen aus den Tabellen- und Spaltennamen in der Abfrage und verwenden Sie auch keine doppelten Anführungszeichen, wenn Sie die Tabelle im DDL-Skript erstellen.

Die korrekte SQL-Abfrage lautet wie folgt:

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

Vermeiden Sie die Verwendung doppelter Anführungszeichen in DDL-Skripten:

Best Practice besteht darin, die Verwendung doppelter Anführungszeichen in DDL-Skripten zu vermeiden. Es wird empfohlen, einen Namen ausschließlich in Großbuchstaben zu verwenden:

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

Dieser Ansatz bietet mehr Flexibilität und vermeidet potenzielle Fehler aufgrund inkonsistenter Schreibweise. Beachten Sie, dass die redundanten " "-Spalten in der Beispiel-DDL entfernt wurden.

Das obige ist der detaillierte Inhalt vonWarum führt meine Oracle-Abfrage zu ORA-00904: Ungültiger Bezeichner?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn