使用SDO_FILTER

来源:互联网 发布:日语打字练习软件 编辑:程序博客网 时间:2024/05/29 07:11

开始在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也是成功的。

 

目前由于精力和水平有限,没法深入的学习和探讨,也只能记录些小问题是怎么解决的。