调用存储过程触发ORA-06576错误:无效的函数或过程名
解决ORA-06576调用存储过程错误的方法
排查与解决步骤
确认对象存在性与拼写
用数据库客户端执行SQL,验证D2模式下是否存在R_C存储过程:SELECT object_name FROM all_procedures WHERE owner = 'D2' AND object_name = 'R_C';若查询无结果,说明存储过程不存在或拼写错误。注意Oracle对象名默认大写,若创建时用双引号定义了小写/混合名,查询时需带双引号,比如
object_name = "r_c"。检查执行权限
确保Liquibase使用的数据库用户拥有D2.R_C的执行权限,用DBA账号执行授权:GRANT EXECUTE ON D2.R_C TO [liquibase用户名];匹配存储过程参数
查看R_C的定义,确认参数数量、类型、顺序与调用语句完全一致。比如存储过程若要求第一个参数是数字类型,传入字符串'D2'会直接触发错误。处理大小写敏感场景
如果存储过程或模式是用双引号创建的(例如CREATE PROCEDURE "D2"."R_C"(...)),调用时必须保留双引号:call "D2"."R_C"('D2','D8')调整Liquibase执行配置
检查changeSet的SQL文件配置,确保分隔符处理正确。由于file.sql中用/作为语句结束符,需在changeSet中指定相关参数:<changeSet id="call_proc" author="yourname"> <sqlFile path="file.sql" splitStatements="false" endDelimiter="/"/> </changeSet>
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

