开始在SQL Plus中使用sdo_filter的时候不成功。后来总算解决了问题。
1开始时候:select a.uwi
from SPATIAL_USER.C_WELL a
where sdo_filter(a.shape,mdsys.sdo_geometry(2003,null,null,
mdsys.sdo_elem_info_array(1,1003,3),
mdsys.sdo_ordinate_array(28.8,9.5,29.2,10.0)),
'querytype=window')='true'
错误为:ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
ORA-13207: 运算符 [SDO_FILTER] 使用不正确
ORA-06512: 在"MDSYS.SDO_INDEX_METHOD_9I", line 368
ORA-06512: 在line 1
2换一种去掉最后一个参数(显然不成功。因为这是必须给定的参数)关于第三个参数,可以参看文档。
3最后想着第三参数应该是为空:
select a.uwi
from SPATIAL_USER.C_WELL a
where sdo_filter(a.shape,mdsys.sdo_geometry(2003,null,null,
mdsys.sdo_elem_info_array(1,1003,3),
mdsys.sdo_ordinate_array(28.8,9.5,29.2,10.0)),
'')='TRUE'
OK! 成功了!
那么问题到这里是完了吗?我再看了看Oracle® Spatial User's Guide and Reference
http://stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10826/sdo_operat.htm#BJAFBCFC
它的例子中居然没有第三参数?我不知道它是怎么成功的!但是我发现最后='TRUE'一定要大写,否则就会报错。事实上我想的3的第三参数加上querytype=window也是成功的。
目前由于精力和水平有限,没法深入的学习和探讨,也只能记录些小问题是怎么解决的。