Postgresql错误-函数返回类型不匹配

Postgresql错误-函数返回类型不匹配,sql,postgresql,pgadmin,Sql,Postgresql,Pgadmin,我正在寻找有关我在pgAdmin3 for 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

我正在寻找有关我在pgAdmin3 for 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$
下面是我尝试添加函数时收到的错误消息:

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或 插入/更新/删除返回。上下文:SQL函数 “功能净风险”


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

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

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

$BODY$

...

$BODY$
LANGUAGE PLpgSQL;

您缺少函数的语言规范。它看起来像一个PL/pgSQL函数,但正如错误消息所暗示的,系统可能认为它是一个SQL函数。虽然我想知道它是如何以这种方式编译的。哦,是的,这正是发生的事情,我在函数的pgadmin定义中将默认值保留为“sql”,而不是“plpgsql”。谢谢你指出这一点!如果你想把你的评论作为一个答案,我会把它标记为一个解决方案。