我知道以下是可能的。即我可以在 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;
最佳答案
在 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
变量,您不能使用带有 value 的 RETURN
语句结束函数,而是使用简单的 RETURN;
有效。
关于postgresql - 允许将 RefCursor 作为 Postgresql 函数的 OUT 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49207616/