2017-09-26 40 views
0

雖然執行下面的查詢,它的成功執行。內部查詢工作流程

但是,當僅執行(SELECT CREDITDOCUMENTID FROM TBLTPAYMENT)這是給像 「00904. 00000 - 」%s錯誤:無效的標識符「」。

不知道它在Oracle數據庫12c中如何工作。

SELECT * 
FROM TBLTCREDITCREDITDOCUMENTREL 
WHERE CREDITDOCUMENTID IN 
    (SELECT CREDITDOCUMENTID 
    FROM TBLTCREDITDOCUMENT 
    WHERE CREDITDOCUMENTID IN 
    (SELECT CREDITDOCUMENTID FROM TBLTPAYMENT ) 
); 
+1

請分享TBLTCREDITCREDITDOCUMENTREL,TBLTCREDITDOCUMENT和TBLTPAYMENT –

回答

2

一個猜測(我打賭它)將是您的列CREDITDOCUMENTID是不是從TBLTPAYMENT表中的列,而是由其他的表是在範圍上,例如在TBLTCREDITDOCUMENT。這很容易檢查。嘗試運行此查詢:

SELECT * 
FROM TBLTCREDITCREDITDOCUMENTREL 
WHERE CREDITDOCUMENTID IN 
    (SELECT CREDITDOCUMENTID 
    FROM TBLTCREDITDOCUMENT 
    WHERE CREDITDOCUMENTID IN 
    (SELECT TBLTPAYMENT.CREDITDOCUMENTID FROM TBLTPAYMENT) 
); 

如果您符合TBLTPAYMENT.CREDITDOCUMENTID列的條件。你會得到同樣的錯誤,當你在自己獨立運行最內層的SELECT作爲。

+0

的表定義[順便說一句,我在甲骨文12.2.0.1發現了一個有趣的bug,同時研究這個問題(https://twitter.com/lukaseder/status/912626775561207808) –

+0

盧卡斯感謝您的回覆,您R右CREDITDOCUMENTID不是TBLTPAYMENT表中的列,但在執行你提供的查詢也成功執行。 – SamDPatel

+0

@SamDPatel:你確定嗎?那是一個相當強烈的矛盾。 –