oracle spatial operator sdo\u join返回ora-01722无效数字

ffscu2ro  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(315)

首先,我在user\u sdo\u geom\u metadata中为两个表test\u katt和test\u del\u ko创建了元数据。每个表都有一个唯一的id(featureid)。一个表有点几何,另一个有多边形。
--示例

insert into user_sdo_geom_metadata (table_name, column_name, diminfo,srid) values (
    'test_katt',  --table name
    'geometry',         
    SDO_DIM_ARRAY(
    SDO_DIM_ELEMENT('Y',365000,627000,0.005), --box
    SDO_DIM_ELEMENT('X',28000,195000,0.005)), --box
    null
  );

其次:我为两个表创建了一个空间索引:

create index test_katt_idx 
          on test_katt (geometry) indextype is mdsys.spatial_index;

最后,我想基于任何空间交互,将“test\u katt”中的点数据和“test\u del\u ko”中的多边形数据连接起来。结果是:错误报告-ora-01722:无效数字

select *   
from test_del_ko dk, test_katt ka,  
                table (SDO_JOIN('test_del_ko', 'geometry',   
                'test_katt', 'geometry',   
                'mask = anyinteract') )a  
where a.rowid1 = dk.featureid  
and a.rowid2 = ka.featureid;

我还没有成功地用sdo\u join创建一个结果,因此任何有关这个过程的帮助都会非常有用。我们有oracle12数据库。

8e2ybdfx

8e2ybdfx1#

在您的查询中,a.rowid1和a.rowid2是varchar2格式的oracle rowids,您将它们与表中的featureid列进行比较,我假设它们是数字。所以你才会出错。改用此查询:

select *   
from test_del_ko dk, test_katt ka,  
                table (SDO_JOIN('test_del_ko', 'geometry',   
                'test_katt', 'geometry',   
                'mask = anyinteract') )a  
where a.rowid1 = dk.rowid  
and a.rowid2 = ka.rowid;

相关问题