PostgreSQL从版本11开始支持存储过程( not function )。我创建了一个这样的存储过程:
CREATE OR REPLACE PROCEDURE get_user_list ()
LANGUAGE SQL
SECURITY DEFINER
AS $$
SELECT "id",
"username",
"display_name"
FROM "user"
ORDER BY "created_at" ASC;
$$;
但是当我尝试执行此存储过程时,它不会返回任何数据:
postgres=# CALL get_user_list();
CALL
postgres=# SELECT * FROM get_user_list();
ERROR: get_user_list() is a procedure
LINE 1: SELECT * FROM get_user_list();
^
HINT: To call a procedure, use CALL.
所以问题是,存储过程如何在PostgreSQL 11 +中返回其结果集?