错误:PostgreSQL函数“ RETURN”处或附近的语法错误

时间:2018-07-23 06:23:41

标签: postgresql sql-function sql-returning

我正在尝试编写一个通过添加人员id从我的表返回json数据的函数。 我正在使用pgAdmin 4。

CREATE FUNCTION public.getuserinfo(IN userid bigint DEFAULT 00000, OUT uinfo json)
RETURNS SETOF json
LANGUAGE 'sql'
VOLATILE 
AS $BODY$
SELECT info into uinfo FROM public.users Where uid=userid;
RETURN uinfo;
$BODY$;
ALTER FUNCTION public.getuserinfo(bigint)
 OWNER TO sun;
GRANT EXECUTE ON FUNCTION public.getuserinfo(bigint) TO sun 
WITH GRANT OPTION;
REVOKE ALL ON FUNCTION public.getuserinfo(bigint) FROM 
PUBLIC;
COMMENT ON FUNCTION public.getuserinfo(bigint)
  IS 'gets user info by id';

但我遇到此错误。error image 我搜索了教程和另一篇先前的帖子this 但没有任何帮助。预先感谢。

1 个答案:

答案 0 :(得分:0)

您不是在告诉函数有一系列事情,因此它期望只有一个语句,而只有两个。使用BEGINEND

CREATE FUNCTION public.getuserinfo(IN userid bigint DEFAULT 00000, OUT uinfo json)
RETURNS SETOF json
VOLATILE 
AS $BODY$
BEGIN
  SELECT info into uinfo FROM public.users Where uid=userid;
  RETURN uinfo;
END;
$BODY$ LANGUAGE plpgsql;

另外,该语言可能应该是PL / PGSQL