Oracle-10g

Oracle 10 列名解析

  • November 17, 2013

例如(只是為了說明問題),

CREATE TABLE test_join(ID INT NOT NULL);
--1 
SELECT ID FROM 
test_join A
INNER JOIN test_join b ON 1=1;
--2 
SELECT ID FROM 
test_join A
INNER JOIN test_join b ON 1=1
INNER JOIN test_join c ON 1=1;

第一個給出了預期的“ORA-00918:列不明確定義”。第二個執行沒有任何抱怨(Oracle 10g)。我想知道這是一個錯誤還是我在名稱解析規則中遺漏了一些明顯的東西。Oracle 11 在這兩種情況下都會出錯。

謝謝

在您使用的任何 10g 版本中,這實際上都是一個錯誤,在您在兩個語句中都看到錯誤的任何 11g 版本中似乎都已修復。

我面前沒有 10g 的數據庫來測試這個。我敢打賭,如果您使用舊式連接語法而不是 SQL 99 語法,那麼在這兩種情況下都會出錯。這意味著問題在於 Oracle 沒有正確地將 SQL 99 語法轉換為舊式語法,並且缺少列定義不明確的事實。

引用自:https://dba.stackexchange.com/questions/53447