我试着在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
我不确定如何让它工作。
发布于 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';
发布于 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“。
https://stackoverflow.com/questions/50746060
复制相似问题