ORA-00904: 无效的标识符,当列标题正确时
Posted
技术标签:
【中文标题】ORA-00904: 无效的标识符,当列标题正确时【英文标题】:ORA-00904: invalid identifier, when column title is correct 【发布时间】:2018-04-06 00:49:21 【问题描述】:我有一个大型 SQL 查询(15m 运行时)由其他人创建,我最近添加了一个新列“SSBSECT_MAX_ENRL”。现在我收到 ORA-00904 错误...但是名称是正确的,表参考也是如此。
在“长列列表”中没有任何更改。 没有是带有“引号”的别名,所有字段和命令都以 CAPS LOCK 字符输入。只是为了仔细检查,我删除了两条新行,它运行得很好。
表 DDEF_STAG.SSBSECT 有 2 个键,SSBSECT_TERM_CODE 和 SSBSECT_CRN。我已经检查了该字段的拼写五次。 “SSBSECT_MAX_ENRL”一个 P5 字段。
做了一些更多的挖掘,我意识到表首先被截断,插入。查询中的其他步骤使用 DROP 和 CREATE。
有什么线索或建议吗?
TRUNCATE TABLE DDEF_STAG.SCR_DRIVER;
(Drop all indexes)
INSERT INTO DDEF_STAG.SCR_DRIVER
(
(Long list of columns)
**SSBSECT_MAX_ENRL**
)
SELECT
(Long list of columns)
**DDEF_STAG.SSBSECT.SSBSECT_MAX_ENRL**
FROM
DDEF_STAG.STVRSTS,
DDEF_STAG.STVTERM STVTERM2,
DDEF_STAG.STVTERM,
DDEF_STAG.SYRPRLE,
DDEF_STAG.SCBCRSE_XREF,
DDEF_STAG.SSBSECT,
DDEF_STAG.SGBSTDN,
DDEF_STAG.SGBSTDN_XREF,
DDEF_STAG.SFRSTCR,
DDEF_STAG.STUDENT_TOINCLUDE_DWH
WHERE (giant list of criteria too long to list)
(Recreate all indexes)
【问题讨论】:
你在哪里(一长串的列)——你可能搞砸了那里的东西 运行此命令并让我们知道您是否可以看到新列:describe DDEF_STAG.SSBSECT; 只是为了仔细检查,我删除了两个新行,脚本运行得很好。表 DDEF_STAG.SSBSECT 有 2 个 Key,SSBSECT_TERM_CODE 和 SSBSECT_CRN,这两个键都在 select 语句中使用。我已经检查了该字段的拼写五次。 “SSBSECT_MAX_ENRL”一个 P5 字段。 也许您只是在添加的列之前错过了一个逗号? 【参考方案1】:我发现了问题:需要删除并重新创建表,而不是使用 TRUNCATE 命令。
【讨论】:
以上是关于ORA-00904: 无效的标识符,当列标题正确时的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00904: 无效标识符 00904. 00000 - "%s: 无效标识符"