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
子句。
以上错误很常见,但我仍然找不到任何对我有帮助的解决方案。作为 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
子句。