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

Man*_*uri 3 postgresql plsql stored-procedures ref-cursor stored-functions

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

CREATE FUNCTION employeefunc(int) RETURNS refcursor AS '
DECLARE ref refcursor;  
BEGIN
OPEN ref FOR SELECT * FROM employee where id = $1;
RETURN ref;
END;
Run Code Online (Sandbox Code Playgroud)

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

供您参考,请遵循我正在寻找的 Oracle 等效内容。

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

Kau*_*yak 5

CREATE PROCEDUREPostgresql 中没有像 Oracle PL/SQL 那样的功能。您可以创建一个FUNCTION参数OUTREFCURSOR,但RETURN TYPE应指定为REFCURSOR

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

如您所见,没有任何RETURN声明。这是因为如果函数有OUT变量,则不能使用带有value 的RETURN语句来结束函数,但使用 simple是有效的。RETURN;