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

时间:2018-08-09 11:22:20

标签: sql postgresql pgadmin

我正在寻找有关在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或   插入/更新/删除返回。上下文:SQL函数   “ func_net_exposure”

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

1 个答案:

答案 0 :(得分:0)

系统认为函数的语言是SQL,因此希望最后一个语句是SELECT... RETURNING。语言应为PL / pgSQL。添加如下语言规范:

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

$BODY$

...

$BODY$
LANGUAGE PLpgSQL;