1

我在 Oracle 中有以下 SQL 语句,这让我有些头疼。如果 Oracle 表中保存的值为 null,我试图返回一个空几何,但它只是失败并出现以下错误:

错误

*

ORA-29532:Java 调用因未捕获的 Java 异常终止:java.lang.NullPointerException ORA-06512:在“MDSYS.SDO_UTIL”,第 2421 行 ORA-06512:在“MDSYS.SDO_UTIL”,第 2443 行 ORA-06512:在“MDSYS” .SDO_GEOMETRY”,第 36 行

*

编码

select CLUSTER_ID, 
       NUM_POINTS, 
       FEATURE_PK, 
       A.CELL_CENTROID.SDO_POINT.X, 
       A.CELL_CENTROID.SDO_POINT.Y, 
       A.CLUSTER_CENTROID.SDO_POINT.X, 
       A.CLUSTER_CENTROID.SDO_POINT.Y,
       TO_CHAR (A.CLUSTER_EXTENT.GET_WKT ()),  
       TO_CHAR (A.CELL_GEOM.GET_WKT ()), 
       A.CLUSTER_EXTENT.SDO_SRID, 
       TPHS_PHASE_ID 
from (SELECT CLUSTER_ID, 
             NUM_POINTS, 
             FEATURE_PK, 
             SDO_CS.transform (CLUSTER_CENTROID, 4326) cluster_centroid, 
             SDO_CS.TRANSFORM(NVL(CLUSTER_EXTENT, MDSYS.SDO_GEOMETRY(2001,4326 ,MDSYS.SDO_POINT_TYPE(NULL,NULL,NULL),NULL,NULL)),4326) CLUSTER_EXTENT , 
             SDO_CS.transform (CELL_CENTROID, 4326) cell_centroid, CELL_GEOM FROM              
             V_CLUSTER_1000M) a  
 LEFT JOIN  RWOL_TMA_ROADWORKS 
 ON a.FEATURE_PK = RWOL_TMA_ROADWORKS.TPHS_PHASE_ID   
 where sdo_filter( A.CELL_GEOM, SDO_CS.transform(mdsys.sdo_geometry(2003,4326, NULL, mdsys.sdo_elem_info_array(1,1003,3),mdsys.sdo_ordinate_array(-25.43623984375,44.257784519021, 21.62918984375, 60.752403080295)),81989)) = 'TRUE'

有人知道这里出了什么问题吗?我不是 Oracle 开发人员,因此感谢您提供任何帮助和解释。

4

1 回答 1

1

这里的问题是由线路引起的

TO_CHAR (A.CLUSTER_EXTENT.GET_WKT ()),

这一行试图从返回的列中获取一个众所周知的文本项,因为我们没有提供有效的文本项,所以它失败了。真是奇怪的错误。

于 2012-08-20T11:04:08.167 回答