sql - 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”
有关如何解决此错误的任何线索?
解决方案
系统认为函数的语言是 SQL,因此期望最后一条语句是SELECT
or ... RETURNING
。语言应该是 PL/pgSQL。添加语言规范,例如:
CREATE OR REPLACE FUNCTION data.func_net_exposure(id_fund_arg text)
RETURNS real AS
$BODY$
...
$BODY$
LANGUAGE PLpgSQL;
推荐阅读
- django - 我可以在 django 中的 HTML 中添加表单吗
- apache-spark - 无法读取 csv pyspark
- python - 如何正确塑造 keras 模型的输入数据?
- python-3.x - 使用 tensorflow 2.4.1 训练模型时出现问题
- r - 如何从服务器下载图像,然后使用 R 将其上传到网站?
- python - 如何在 sklearn 中进行多词标记化?
- javascript - LabeledMap 和 Map 相等
- gam - GAM 仪表板 - 有没有办法阻止广告在特定页面或 URL 上显示?
- c# - 如何将 Unity C# 结构发送到 Objective-C 插件?
- javascript - 如何正确使用 intl.formatRelativeTime()