[英]Strange Invalid identifier error oracle SQL
我有Oracle SQL查詢的這一部分(在它上面有很多內容,不適用於該問題)...
authorw as (
select a.id, (sum(p.w)) "theWeightOfTheAuthor"
from ac a, pc p, authorpublication ap
where a.id = ap.aid and ap.pid = p.id
group by a.id)
select authorCount.id "ID", auth.name "NAME", authorCount.c "TOTAL_NUMBER_OF_PUBS",
athw.theWeightOfTheAuthor "W_SCORE",
(authorCount.C / athw.theWeightOfTheAuthor) "MULT"
from ac authorCount, authorw athw, Author auth
where authorCount.id = athw.id and authorCount.id = auth.id
order by TOTAL_NUMBER_OF_PUBS desc;
我收到錯誤的地方:
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
創建操作,表theWeightOfTheAuthor
預期正確打印出來,並帶有theWeightOfTheAuthor
列。 是什么賦予了?
定義時,請刪除"theWeightOfTheAuthor"
周圍的引號,或者在使用時添加引號。 在定義名稱時引用該名稱會使名稱區分大小寫,並且由於Oracle將所有未引用的標識符更改為UPPER CASE,因此您對該字段的引用實際上是在尋找ATHW.THEWEIGHTOFTHEAUTHOR,該名稱不存在。
Oracle編程的基本規則是-永遠不要引用標識符。 真痛苦 只是不要這樣做。
祝你好運。
您已將列別名用雙引號(大小寫混合)指定為"theWeightOfTheAuthor"
。 當您在列名中使用雙引號時,Oracle會保留大小寫。 當您不帶引號引用它時,如athw.theWeightOfTheAuthor
,Oracle會自動將其轉換為大寫。 所以兩者不匹配。
我的建議是從別名中刪除雙引號,因此也將其解釋為大寫。 另外,您可以在此列的所有引用中使用雙引號,但是在列名中使用混合大小寫不會帶來任何好處。 (出於可讀性考慮,您仍然可以將其寫為大寫形式,但Oracle會將其視為大寫形式。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.