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