Oracle数据库SDO_ARC_DENSIFY调用报ORA-06553错误求助
SDO_ARC_DENSIFY调用参数数量错误的原因及解决
问题场景
尝试将致密化后的圆弧几何更新到数据表,执行的SQL语句如下:
update aip_radiofrequencyarea set extent_arc = SDO_GEOM.SDO_ARC_DENSIFY( extent, MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',3460000,3475000,0.005), MDSYS.SDO_DIM_ELEMENT('Y',5500000,5635000,0.005) ), MDSYS.SDO_DIM_ELEMENT('Z',0, 1000, 0.005), 'ARC_TOLERANCE=0.005' );
执行后收到错误信息:
SQL-Fehler: ORA-06553: PLS-306: wrong number of Arguments in 'SDO_ARC_DENSIFY' 06553. 00000 - "PLS-%s: %s" *Cause: SQL compilation failed because of an illegal reference to a PL/SQL unit. *Action: If the PL/SQL error message does not provide a workaround, then try the SQL statement as a top-level call as the appropriate user with the appropriate privileges.
错误原因
错误核心是调用SDO_GEOM.SDO_ARC_DENSIFY时传入的参数数量不符合函数定义。Oracle Spatial的该函数要求空间维度信息必须作为一个整体的MDSYS.SDO_DIM_ARRAY对象传递,而你将Z维度的SDO_DIM_ELEMENT单独作为第三个参数传入,导致参数总数超出了函数预期的合法数量。
修正后的SQL
将Z维度的SDO_DIM_ELEMENT合并到SDO_DIM_ARRAY中,统一作为第二个参数传递:
update aip_radiofrequencyarea set extent_arc = SDO_GEOM.SDO_ARC_DENSIFY( extent, MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',3460000,3475000,0.005), MDSYS.SDO_DIM_ELEMENT('Y',5500000,5635000,0.005), MDSYS.SDO_DIM_ELEMENT('Z',0, 1000, 0.005) ), 'ARC_TOLERANCE=0.005' );
内容的提问来源于stack exchange,提问作者ChaoticDecay1012
相关产品推荐
相关产品推荐

