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

时间:2018-03-10 09:44:21

标签: postgresql stored-procedures plsql stored-functions ref-cursor

我知道以下是可能的。即我可以在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函数中将引用游标作为OUT参数吗?

供您参考,遵循我所寻找的Oracle等同物。

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

2 个答案:

答案 0 :(得分:3)

Postgresql中没有CREATE PROCEDURE,如Oracle PL / SQL。您可以创建FUNCTION OUT参数作为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语句结束函数,但使用简单{ {1}}有效。

答案 1 :(得分:0)

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

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

谢谢!!