CREATE FUNCTION retrieve_add_friends(user_id text[])
RETURNS SETOF user_rows AS
$BODY$
BEGIN
FOR user_rows IN EXECUTE SELECT * FROM user_details where user_id= $1
LOOP
FOR user_friends IN EXECUTE SELECT * FROM user_add_friends where user_id= $1
LOOP
IF user_rows.user_id!=user_friends.user_friend_id THEN
RETURN NEXT user_rows;
END IF;
END LOOP;
RETURN;
END LOOP;
RETURN;
END
$BODY$
language plpgsql VOLATILE;
执行此操作时,出现以下错误:
错误:声明为返回user_details的函数中的返回类型不匹配
详细信息:函数的最终语句必须为SELECT或INSERT / UPDATE / DELETE RETURNING。 上下文:SQL函数“ retrieve_add_friends”
有人可以帮我吗?
答案 0 :(得分:0)
显示的函数是PL / pgSQL函数。
显然,您正在调用不同的函数(一种SQL函数)(对于该错误,msg才有意义):
SQL函数“ retrieve_add_friends”
相同的函数名称,但参数不同(并且可能在不同的数据库模式中)。您是否知道function overloading及其含义?
相关:
快速诊断:
SELECT oid::regprocedure AS function_signature, *
FROM pg_proc
WHERE proname = 'retrieve_add_friends';
除此之外,显示的功能有多个错误,可以用普通的SELECT
代替。