【发布时间】:2018-08-09 20:35:41
【问题描述】:
我正在寻找一些关于我在 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:错误:错误:在声明的函数中返回类型不匹配 return real DETAIL:函数的最终语句必须是 SELECT 或 插入/更新/删除返回。上下文:SQL 函数 “func_net_exposure”
关于如何解决这个错误的任何线索?
【问题讨论】:
-
您缺少该函数的语言规范。它看起来像一个 PL/pgSQL 函数,但系统可能认为它是一个 SQL 函数,正如错误消息所暗示的那样。虽然我想知道它是如何以这种方式编译的。
-
哦,是的,这正是发生的事情,我在函数的 pgadmin 定义中将默认设置为“sql”,而不是“plpgsql”。感谢您指出这一点!如果您想发表评论作为答案,我会将其标记为解决方案。
标签: sql postgresql pgadmin