允许将 RefCursor 作为 Postgresql 函数的 OUT 参数吗?

Is having RefCursor as an OUT parameter of a Postgresql function, allowed?

我知道以下是可能的。即我可以将引用游标作为 Postgresql 中的 return 值。

CREATE FUNCTION employeefunc(int) RETURNS refcursor AS '
DECLARE ref refcursor;  
BEGIN
OPEN ref FOR SELECT * FROM employee where id = ;
RETURN ref;
END;

但是我们可以在 postgresql 函数中将引用游标作为 OUT 参数吗?

供您参考,按照我正在寻找的 Oracle 等价物。

create or replace procedure employeefunc(rc out sys_refcursor) as
begin
open rc for 'select * from employee';
end;

在 Postgresql 中没有像 Oracle PL/SQL 这样的 CREATE PROCEDURE。您可以使用 OUT 参数创建 FUNCTION 作为 REFCURSOR,但 RETURN TYPE 应指定为 REFCURSOR.

CREATE FUNCTION employeefunc (rc_out OUT refcursor)
RETURNS refcursor
AS
$$
BEGIN
    OPEN rc_out
    FOR
    SELECT *
    FROM employees;
END;
$$ LANGUAGE plpgsql;

如您所见,没有 RETURN 语句。那是因为如果函数有 OUT 个变量,你不能使用带有 valueRETURN 语句结束函数,而是使用简单的 RETURN; ] 有效。

Postgresql 存储过程不像其他服务器那样支持 OUT 参数。但它支持 INOUT 参数,我们可以使用这些参数来执行输出任务。

注意:版本 11 中引入了 Postgresql 中的存储过程;因此,如果您使用的是早期版本,请在使用存储过程之前升级它。

谢谢!!