PostgreSQL 从版本 11 开始支持存储过程(不是函数)。我创建了一个这样的存储过程:
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+ 中返回其结果集?