You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 05:58:20