Redshift调用主存储过程提示procedure不存在报错如何解决?
报错排查及解决步骤
问题根因定位
你创建存储过程时指定了schema前缀schema.master_stored_procedure,但调用时未携带schema,当前数据库会话的搜索路径search_path未包含该schema,因此数据库无法找到对应存储过程。
分步排查解决
- 校验存储过程是否创建成功
执行如下SQL查询存储过程是否存在:
SELECT proname, nspname AS schema_name FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE proname = 'master_stored_procedure';
如果查询无结果,说明之前的CREATE语句执行失败,需检查CREATE阶段的报错信息,确认你对目标schema有创建权限、语法无错误。
- 核对schema路径配置
执行命令查看当前会话的搜索路径:SHOW search_path;
如果输出结果中不包含你创建存储过程时指定的schema,选择以下任意一种方法解决:
- 调用时补全完整schema路径:
CALL schema.master_stored_procedure();(将schema替换为你实际使用的schema名即可) - 临时修改当前会话的搜索路径,追加目标schema:
SET search_path TO 你的schema名, public;,修改完成后可直接调用CALL master_stored_procedure();
- 额外注意事项
主存储过程内部调用的stored_procedure_1、stored_procedure_2建议也补全schema前缀,避免主过程执行时出现子存储过程找不到的同类报错。
内容的提问来源于stack exchange,提问作者Aim_headshot
相关产品推荐
相关产品推荐

