我知道以下是可能的。即我可以在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;
答案 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 中引入;因此,如果您使用的是早期版本,请在使用存储过程之前对其进行升级。
谢谢!!