Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的无效标识符错误oracle SQL_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

奇怪的无效标识符错误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

我有一个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.theWeightOfTheAuthor) "MULT"

注意:我可以访问
athw.id
很好,如果我一直执行到
authorw
创建,那么表将按照预期正确打印出
author
列的权重。给出了什么?

在定义时删除
“作者的权重”
周围的引号,或者在使用时添加引号。在定义名称时引用名称会使名称区分大小写,而且由于Oracle将所有未引用的标识符更改为大写,因此您对该字段的引用实际上是在查找不存在的作者的权重

Oracle编程的一个基本规则是-从不引用标识符。这是一种痛苦。不要这样做


祝您好运。

您已经用双引号指定了列别名,大小写混合,如
“作者的权重”
。当列名使用双引号时,Oracle保留大小写。当您引用它而不加引号时,如作者的权重,Oracle会自动将其转换为大写。所以这两个不匹配


我的建议是删除别名中的双引号,因此它也将被解释为大写。或者,您可以对该列的所有引用使用双引号,但我看不出在列名中使用大小写混合的好处。(为了可读性,您仍然可以将其写为混合大小写,但Oracle会将其视为全大写。)

因为
作者的权重与
作者的权重是不同的名称。有关详细信息,请参阅手册:
(authorCount.C / athw.theWeightOfTheAuthor) "MULT"