首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简单的postgres函数

简单的postgres函数
EN

Stack Overflow用户
提问于 2018-06-08 00:24:36
回答 2查看 44关注 0票数 0

我试着在postgres中声明简单的函数,但是我不能让它工作。它看起来是这样的:

CREATE OR REPLACE FUNCTION test2(rok int, id int)
  RETURNS int AS $$
BEGIN
select sum(data_zakonczenia-data_rozpoczecia) from historia where id_eksponatu = $2 AND data_rozpoczecia>DATE(to_char($1,'9999') || '-01-01') AND data_zakonczenia<DATE(to_char($1+1,'9999') || '-01-01');
END;
$$ LANGUAGE 'plpgsql';

我得到以下错误

ERROR:  query has no destination for result data
PODPOWIEDŹ:  If you want to discard the results of a SELECT, use PERFORM instead.
KONTEKST:  PL/pgSQL function "test2" line 2 at SQL statement

我不确定如何让它工作。

EN

回答 2

Stack Overflow用户

发布于 2018-06-08 00:36:20

好吧,按照我在评论中的提示,我做了这样的事情:

CREATE OR REPLACE FUNCTION test2(rok int, id int)
  RETURNS int AS $$
DECLARE
suma int;
BEGIN
select sum(data_zakonczenia-data_rozpoczecia) into suma from historia where id_eksponatu = $2 AND data_rozpoczecia>DATE(to_char($1,'9999') || '-01-01') AND data_zakonczenia<DATE(to_char($1+1,'9999') || '-01-01');
return suma;
END;
$$ LANGUAGE 'plpgsql';
票数 0
EN

Stack Overflow用户

发布于 2018-06-08 00:39:06

RETURN (select sum(data_zakonczenia-data_rozpoczecia) from historia where id_eksponatu = $2 AND data_rozpoczecia>DATE(to_char($1,'9999') || '-01-01') AND data_zakonczenia<DATE(to_char($1+1,'9999') || '-01-01'));

编辑:您使用了"return“语句。我认为另一个答案是,如果你想返回一个表而不是一个整数,你可以使用"return query“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50746060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档