PostgreSQL pgAdmin4 “window 函数 X 需要一个 OVER 子句 LINE 1: select * from X”

PostgreSQL pgAdmin4 " window function X requires an OVER clause LINE 1: select * from X"

以上错误很常见,但我仍然找不到任何对我有帮助的解决方案。作为 PostgreSQL 的新手,我被困在函数调用中,我定义了一个简单的函数,该函数在执行该函数时 return 来自 table 的列,但它却抛出了我上面的错误。这是我的函数定义及其调用:

CREATE OR REPLACE FUNCTION public.X()
RETURNS SETOF character varying 
LANGUAGE 'sql'

COST 100
VOLATILE LEAKPROOF STRICT SECURITY DEFINER WINDOW 
ROWS 1000
AS $BODY$

Select id from change where id>= '274'

$BODY$;

ALTER FUNCTION public.X(character varying, character varying)
OWNER TO lke_new;
COMMENT ON FUNCTION public.X(character varying, character 
varying)
IS 'The function returns the set of X ids';

--function call
select * from X('274','275')

任何线索都会很有帮助!

您已通过在 CREATE FUNCTION 语句中指定 WINDOW 将此函数声明为 window 函数。

然后你试着像调用普通函数一样调用它。那不行。

此外,唯一可以用来定义 window 函数的语言是 C。就像 the documentation 说的:

WINDOW indicates that the function is a window function rather than a plain function. This is currently only useful for functions written in C.

我怀疑这是错误的,您所要做的就是删除 WINDOW 子句。