2013-01-17 29 views
0

我執行以下查詢:無效的SQL語句「解釋計劃使用」的聲明

explain plan for 
with Foo 
as ( 
    select * from my_table 
    ) 
select * from Foo 
where x = 7; 

這導致Oracle10g中一個無效的SQL語句的例外。沒有解釋計劃,with語句正確執行。爲什麼這個錯誤發生在SQL Developer的上下文中?

+0

@ÁlvaroG.Vicario抄錄錯誤,已修復 – Woot4Moo

+0

這是完整的查詢嗎?當我在Oracle上使用我的表來運行它時,它沒有任何錯誤。 –

+0

@rs是完整的查詢。 Sql Developer向我拋出一個例外。 – Woot4Moo

回答

1

你有一個額外的括號:

explain plan for 
with Foo 
as ( 
    select * from my_table) -- < remove this 
    ) 
select * from Foo 
where x = 7; 
+0

對不起,這是一個錯字,因爲這是通過兩個獨立的網絡。 – Woot4Moo

0

不知道這細微之處,但有另一種方式來寫,這將解釋。

Select * 
    From (
     Select * From my_table 
     ) Foo 
Where Foo.x = 7; 

我從條款敬而遠之,因爲他們沒有很好的端口,在我的經驗,不要被優化以及動態FROM子句evaulated,但這些都是舊的經驗。