奇怪的无效标识符错误oracle SQL
我有一个Oracle SQL查询的这一部分(上面的很多内容不适用于这个问题) 当我收到错误时:奇怪的无效标识符错误oracle SQL,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我有一个Oracle SQL查询的这一部分(上面的很多内容不适用于这个问题) 当我收到错误时: ORA-00904: "ATHW"."THEWEIGHTOFTHEAUTHOR": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action: Error at Line: 404 Column: 22 第404行是最后一行的第四行: (authorCount.C / athw.theWeight
ORA-00904: "ATHW"."THEWEIGHTOFTHEAUTHOR": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 404 Column: 22
第404行是最后一行的第四行:
(authorCount.C / athw.theWeightOfTheAuthor) "MULT"
注意:我可以访问
athw.id
很好,如果我一直执行到authorw
创建,那么表将按照预期正确打印出author
列的权重。给出了什么?在定义时删除“作者的权重”
周围的引号,或者在使用时添加引号。在定义名称时引用名称会使名称区分大小写,而且由于Oracle将所有未引用的标识符更改为大写,因此您对该字段的引用实际上是在查找不存在的作者的权重
Oracle编程的一个基本规则是-从不引用标识符。这是一种痛苦。不要这样做
祝您好运。您已经用双引号指定了列别名,大小写混合,如
“作者的权重”
。当列名使用双引号时,Oracle保留大小写。当您引用它而不加引号时,如作者的权重,Oracle会自动将其转换为大写。所以这两个不匹配
我的建议是删除别名中的双引号,因此它也将被解释为大写。或者,您可以对该列的所有引用使用双引号,但我看不出在列名中使用大小写混合的好处。(为了可读性,您仍然可以将其写为混合大小写,但Oracle会将其视为全大写。)因为
作者的权重与作者的权重是不同的名称。有关详细信息,请参阅手册:
(authorCount.C / athw.theWeightOfTheAuthor) "MULT"