我正在将旧的Oracle代码移植到Postgresql 9.2.有几百个对Oracle NVL()的调用,所以我创建了映射函数来提供等效的功能.这个应该是微不足道的,但是由于对我来说根本不明显的原因而失败了.
CREATE OR REPLACE FUNCTION nvl(expr1 text,expr2 text) RETURNS text AS $BODY$ BEGIN RETURN COALESCE( expr1,expr2 ); END; $BODY$ LANGUAGE plpgsql STRICT IMMUTABLE;
我为不同的输入参数类型定义了NVL的变体,但是为了测试,我删除了除此之外的所有内容.我确定这个被调用,因为如果我删除它,我会得到一个未知的函数错误.
# select nvl(null,'N/A'); nvl ----- (1 row) # select coalesce(nvl(null,'N/A'),'ITS STILL NULL???'); coalesce ------------------- ITS STILL NULL??? (1 row)
从上面可以看出,coalesce很好地独立工作,但不是我的功能.
我正在使用最新版本的Postgresql:
# select version(); Postgresql 9.2.4 on x86_64-unkNown-linux-gnu,compiled by gcc (GCC) 4.4.7 20120 313 (Red Hat 4.4.7-3),64-bit
有线索吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。