Redshift存储过程创建后调用报错:列stg.sp_l1_l_geography_load()不存在
问题原因与修复方案
从错误信息可以明确,问题出在存储过程stg.sp_l1_l_geography_load()内部的代码逻辑,而非外部的CALL调用语句。
错误提示显示,存储过程第8行的赋值语句中出现了:
SELECT "stg.sp_l1_l_geography_load()"
PostgreSQL会将带双引号的"stg.sp_l1_l_geography_load()"识别为列名,而非存储过程调用,这才抛出了“列不存在”的错误。
针对不同场景,修复方式如下:
- 如果是想在存储过程内部递归调用自身,要去掉双引号,用标准的存储过程调用语法:
注意:递归调用必须设置明确的终止条件,防止无限循环。CALL stg.sp_l1_l_geography_load(); - 如果是想给变量赋值某个查询结果,那你大概率写错了目标对象,需要检查第8行的逻辑,确认要查询的是正确的表和列,而非错误地将存储过程名当作列名引用。
内容的提问来源于stack exchange,提问作者Samarth Navneet
相关产品推荐
相关产品推荐

