簡體   English   中英

奇怪的無效標識符錯誤oracle SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM