ORA-00904: 无效标识符

113

我尝试在Oracle数据库中编写以下内部连接查询语句:

 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

这会导致以下错误:

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

一个表的DDL是:

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

你确定列名 Department_Code 拼写正确吗? - Fabrizio D'Ammassa
是的,有一个名为Department_Code的列。 - Navaneethan
15
TL;DR: 使用单引号 '' - Andrew
在我的情况下,这是一个在数据库中不存在的计算列。 - abdoulsn
我不得不在Snowflake中使用双引号。 - alluppercase
14个回答

0

我收到了错误信息,因为我错过了一个表别名并没有使用它。

这会因为 'cl' 别名而抛出错误:

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

没有 'cl' 就可以正常工作:

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

请不要抱怨表名 - 这个架构已经有20年了...

0

我在使用Eclipse Link的JPA 2时遇到了相同的异常。我有一个带有与实体之间一对一关系的@embedded类。 错误地,在嵌入式类中,我还有@Table("TRADER")注释。当JPA从实体创建数据库时,它也创建了一个TRADER表(这是错误的,因为Trader实体被嵌入到主实体中),该表的存在每次尝试持久化实体时都会导致上述异常。 删除TRADER表后,异常消失了。


0
在我的情况下,错误是由于使用了错误的列名大小写引起的,看起来你也遇到了同样的问题。
对于Oracle来说,Department_CodeDEPARTMENT_CODE不是相同的。

0
今天我从数据库得到了相同的错误。我的错误是我为Hibernate配置了错误的默认模式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接