【发布时间】:2015-07-14 14:50:15
【问题描述】:
我在客户端上使用带有 Spatial 和 Oracle SQL Developer 的 Oracle 11g 2.0.1.0。我有一个表 Places 主键 ID 和一个视图 Coordinates 两列:ID 引用 Places 中的帖子,以及 SDO 几何 Point。
我想用下面的 SQL 创建一个物化视图:
CREATE MATERIALIZED VIEW PlaceCoordinates
NOCACHE NOPARALLEL BUILD IMMEDIATE
USING INDEX
REFRESH ON DEMAND COMPLETE
DISABLE QUERY REWRITE AS
SELECT Places.ID, Coordinates.Point
FROM Places
LEFT OUTER JOIN Coordinates ON Places.ID = Coordinates.ID
ORDER BY Places.ID
这给了我这个错误:
ORA-30373:此上下文不支持对象数据类型
无论我按什么排序(即使只是像1 这样的傻事)我都会得到同样的错误。但是,如果我删除 ORDER BY 语句,它就可以正常工作。如果我只做一个普通的SELECT 而不创建物化视图,它也可以很好地进行排序。
为什么我不能排序?反正有这个问题吗?
【问题讨论】:
-
当你
order by 1时,你仍然引用places.ID,只是 by position。它是否让您order by ID没有表前缀? -
另见 MOS 文档 1939208.1,它适用于 12c,但这可能是相关的;或 1067173.1。您是在订购 for physical clustering 还是为了避免在查询 MV 时使用
order by- 这不能保证有效? -
感谢您的评论。你知道为什么我不能引用
Places.ID吗?明天回去工作时,我将不带表前缀进行测试。 -
如果位置参考没有,我怀疑它是否会像
ID一样工作,但也许值得一试。除了我提到的那两个文档之外,不,恐怕不是。 -
Obligatory link to Tom Kytes blog。即使它今天在查询 MV 时似乎没有
order by也能工作,但它可能不会有一天。
标签: sql oracle sorting oracle11g oracle-spatial