2

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

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

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

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

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

2 回答 2

4

Postgresql中没有CREATE PROCEDURE像 Oracle PL/SQL 这样的。您可以创建一个FUNCTIONwithOUT参数 as 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变量,你不能使用RETURN带有value的语句来结束函数,但是使用 simpleRETURN;是有效的。

于 2018-03-10T10:05:44.353 回答
0

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

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

谢谢 !!

于 2020-05-08T04:38:21.040 回答