2011-06-16 40 views
0

是否可以在視圖內添加ORDER SIBLINGS BY fieldName? 我有一個層次結構,其中我成功地使用CONNECT BY功能查詢。Oracle 10g:視圖內的ORDER SIBLINGS

但是,當我在視圖定義中添加ORDER SIBLINGS BY fieldName時,Oracle給出了一個奇怪的括號錯誤。

drop view myview; 
create view myview as (
select id, level as depth, label, parentid, orderhint, 
     connect_by_root myfield1 "myfield1", connect_by_root id "toplevelparentid" 
    from mytable 
    connect by prior id = parentid 
    start with id in (select id from mytable where parentid is null) 
    order siblings by orderhint 
); 

沒有ORDER SIBLINGS BY或在視圖定義之外,它就像一個魅力。否則,我得到:

ORA-00907:缺少右括號

+0

不推薦,在視圖中使用'ORDER BY',因爲它是對於那些使用視圖的人來說並不明顯(但是看不到這樣的查詢) - 浪費資源 – 2011-06-17 03:22:10

+0

這不是一個普通的視圖,它有一個特殊的目的。我無法提供所有細節,但在這裏訂購是至關重要的。不管怎麼說,還是要謝謝你。 – LRMAAX 2011-06-17 06:22:42

回答

2

你有沒有嘗試刪除您的括號:

drop view myview; 
create view myview as 
select id, level as depth, label, parentid, orderhint, 
connect_by_root myfield1 "myfield1", connect_by_root id "toplevelparentid" 
from mytable 
connect by prior id = parentid 
start with id in (select id from mytable where parentid is null) 
order siblings by orderhint; 
+0

我已經嘗試了很多東西,但不是這個簡單的技巧。謝謝!無論如何,Oracle的錯誤信息可能更具描述性,而不僅僅是「缺少右括號」,甚至不是這種情況...... – LRMAAX 2011-06-17 06:25:20