118 Stimmen

ORA-00904: Ungültiger Bezeichner

Ich habe versucht, die folgende Inner-Join-Abfrage mit einer Oracle-Datenbank zu schreiben:

 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

Dies führt zu der folgenden Fehlermeldung:

 INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team ON Team.DEPARTMENT_CODE = Employee.DEPTID
                                              *
ERROR at line 4:
ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier

Die DDL einer Tabelle lautet:

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),
  " " VARCHAR2(255)
)
SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS

0 Stimmen

Sind Sie sicher, dass der Spaltenname Department_Code richtig geschrieben ist?

0 Stimmen

Ja, es gibt eine Spalte Department_Code

16 Stimmen

TL;DR: einfache Anführungszeichen verwenden '' .

0voto

Ashutosh Anand Punkte 171

Ich habe die Werte ohne die Anführungszeichen übergeben. Sobald ich die Bedingungen innerhalb der einfachen Anführungszeichen übergeben funktionierte wie ein Charme.

Select * from emp_table where emp_id=123;

anstelle des obigen Beispiels dies verwenden:

Select * from emp_table where emp_id='123';

0voto

volkit Punkte 638

Ich bekam die Fehlermeldung, weil ich einen Tabellenalias übersehen und nicht verwendet hatte.

Dies führt zu einem Fehler aufgrund des Alias "cl":

SELECT * FROM MYSCHEMA.COMPANYLOCATION_CL cl JOIN MYSCHEMA.COMPANYTYPE_CT ON MYSCHEMA.COMPANYLOCATION_CL.CLNR = MYSCHEMA.COMPANYTYPE_CT.CT_CL_NR 

Ohne 'cl' funktioniert es gut:

SELECT * FROM MYSCHEMA.COMPANYLOCATION_CL JOIN MYSCHEMA.COMPANYTYPE_CT ON MYSCHEMA.COMPANYLOCATION_CL.CLNR = MYSCHEMA.COMPANYTYPE_CT.CT_CL_NR 

Bitte beschweren Sie sich nicht über die Tabellennamen - das Schema ist 20 Jahre alt...

0voto

Andreas Punkte 5030

In meinem Fall wurde der Fehler durch die Verwendung der falscher Fall für einen Spaltennamen und es scheint, dass Sie das gleiche Problem haben.

Department_Code ist nicht dasselbe wie DEPARTMENT_CODE für Oracle.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X