ORA-00904:列标题正确时标识符无效

时间:2018-04-06 00:49:22

标签: sql oracle sql-insert ora-00904

我有一个大的SQL查询(15米运行时)由其他人创建我最近添加了一个新列“SSBSECT_MAX_ENRL”。现在我收到一个ORA-00904错误......但名称是正确的,表引用也是如此。

在“列的长列表”中没有任何更改。 no 是带有“引号”的别名,所有字段和命令都以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)  

1 个答案:

答案 0 :(得分:0)

我发现了问题:表需要删除并重新创建,而不是使用TRUNCATE命令。