无法执行Oracle存储过程SDRG,报ORA-06550错误求助
问题分析与解决
- 错误根源:你的存储过程
MY_schema.SDRG声明了两个必填的IN参数(ID和COUNTER),但调用时未传入任何参数,参数不匹配触发了ORA-06550错误。 - 额外注意:存储过程内部逻辑并未使用这两个传入参数,若参数无实际用途属于设计疏漏——要么删除冗余参数,要么在INSERT/SELECT语句中引用参数。
正确调用方式
方式1:按位置传参
begin MY_schema.SDRG(123, 456); -- 替换为实际业务需要的数值 end; /
方式2:按名称传参(可读性更强,适合多参数场景)
begin MY_schema.SDRG(ID => 123, COUNTER => 456); -- 替换为实际业务需要的数值 end; /
可选优化:删除冗余参数
如果确定这两个参数无实际用途,可修改存储过程删除参数:
CREATE OR REPLACE PROCEDURE MY_schema.SDRG IS BEGIN INSERT INTO newtable_test (ID, COUNTER) SELECT doc.ID, doc.TPID FROM A.doc; END SDRG; /
修改后原调用语句begin SDRG; end;即可正常执行。
内容的提问来源于stack exchange,提问作者Jason Stone
相关产品推荐
相关产品推荐

