首页 > 解决方案 > Postgresql 错误 - 函数返回类型不匹配

问题描述

我正在寻找一些关于我在 pgAdmin3 下为 PostGreSQL 定义的 SQL 函数的帮助。

这是一个简单的函数,应该计算给定某个 id 的比率,但是当我尝试添加该函数时,我收到一条错误消息。
这是该函数的代码:

CREATE OR REPLACE FUNCTION data.func_net_exposure(id_fund_arg text)
RETURNS real AS

$BODY$

DECLARE
    net_exposure real;
    AUM smallint;

BEGIN
    AUM := (SELECT sum(cash_fund_total) from main.main_cash where id_fund = id_fund_arg); 
    net_exposure := (SELECT ROUND(sum(exposure_eur)/(100*AUM)) from main.main_inventory where id_fund = id_fund_arg); 
    return net_exposure;
END;

$BODY$

这是我尝试添加函数时收到的错误消息:

发生了错误:

13:13:54:错误:错误:声明返回真实的函数中的返回类型不匹配详细信息:函数的最终语句必须是 SELECT 或 INSERT/UPDATE/DELETE RETURNING。上下文:SQL 函数“func_net_exposure”

有关如何解决此错误的任何线索?

标签: sqlpostgresqlpgadmin

解决方案


系统认为函数的语言是 SQL,因此期望最后一条语句是SELECTor ... RETURNING。语言应该是 PL/pgSQL。添加语言规范,例如:

CREATE OR REPLACE FUNCTION data.func_net_exposure(id_fund_arg text)
RETURNS real AS

$BODY$

...

$BODY$
LANGUAGE PLpgSQL;

推荐阅读