允许将 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
个变量,你不能使用带有 value 的 RETURN
语句结束函数,而是使用简单的 RETURN;
] 有效。
Postgresql 存储过程不像其他服务器那样支持 OUT 参数。但它支持 INOUT 参数,我们可以使用这些参数来执行输出任务。
注意:版本 11 中引入了 Postgresql 中的存储过程;因此,如果您使用的是早期版本,请在使用存储过程之前升级它。
谢谢!!
我知道以下是可能的。即我可以将引用游标作为 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
个变量,你不能使用带有 value 的 RETURN
语句结束函数,而是使用简单的 RETURN;
] 有效。
Postgresql 存储过程不像其他服务器那样支持 OUT 参数。但它支持 INOUT 参数,我们可以使用这些参数来执行输出任务。
注意:版本 11 中引入了 Postgresql 中的存储过程;因此,如果您使用的是早期版本,请在使用存储过程之前升级它。
谢谢!!