Oracle 10g:在视图中排序兄弟
Posted
技术标签:
【中文标题】Oracle 10g:在视图中排序兄弟【英文标题】:Oracle 10g : ORDER SIBLINGS inside a VIEW 【发布时间】:2011-06-16 14:05:34 【问题描述】:是否可以在视图中添加 ORDER SIBLINGS BY fieldName? 我有一个层次结构,其中我成功地使用了具有 CONNECT BY 功能的查询。
但是,当我在视图定义中添加 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:缺少右括号
【问题讨论】:
不推荐,在视图中使用ORDER BY
,因为它对使用视图的人来说并不明显(但看不到生成它的查询)——浪费资源
这不是一个普通的视图,它有一个特殊的用途。我不能提供所有细节,但这里的顺序至关重要。还是谢谢。
【参考方案1】:
您是否尝试过删除括号:
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;
【讨论】:
我尝试了很多东西,但不是这个简单的技巧。谢谢!无论如何,Oracle 的错误消息可能更具描述性,而不仅仅是“缺少右括号”,甚至不是这种情况......以上是关于Oracle 10g:在视图中排序兄弟的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步