使用SDO_FILTER

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

 

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

 

 

 

 

 

 

 

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值