创建plpgsql日期校验函数报language plpgsql not supported错误如何解决?
报错原因
该报错的核心是你使用的数据库不支持plpgsql作为自定义函数的开发语言:
- 最常见的场景为使用Amazon Redshift:Redshift虽基于PostgreSQL内核开发,但裁剪了PL/pgSQL语言支持,不允许创建PL/pgSQL类型的自定义函数
- 如果你使用的是原生PostgreSQL,说明当前数据库未加载plpgsql扩展
解决方案
场景1:使用Amazon Redshift
直接使用SQL语言编写校验函数,借助Redshift自带的TRY_CAST函数实现日期合法性校验,替代原PL/pgSQL逻辑:
CREATE OR REPLACE FUNCTION public.valid_date(p_str varchar(50)) RETURNS boolean IMMUTABLE AS $$ SELECT TRY_CAST($1 AS DATE) IS NOT NULL; $$ LANGUAGE sql;
该函数和你原有PL/pgSQL函数的逻辑完全一致:输入字符串可合法转换为日期则返回true,转换失败则返回false。
场景2:使用原生PostgreSQL
先执行扩展创建命令开启plpgsql支持,再执行你原有函数创建语句即可:
CREATE EXTENSION IF NOT EXISTS plpgsql;
内容的提问来源于stack exchange,提问作者Ros
相关产品推荐
相关产品推荐

