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

标签 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;

最佳答案

在 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 变量,您不能使用带有 valueRETURN 语句结束函数,而是使用简单的 RETURN; 有效。

关于postgresql - 允许将 RefCursor 作为 Postgresql 函数的 OUT 参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49207616/

相关文章:

mysql - 存储过程无法运行,出现一些语法错误

sql - 验证 dbms_sql.execute 执行的代码 PL/SQL

oracle - plsql ora -00932 : inconsistent datatypes: expected - got -

arrays - 如何获取数组的最后 25 项?

sql - 将交叉表功能与 DISTINCT ON 相结合

sql-server - 在一行中创建并传递表值参数

java - 在可调用语句中设置 out 参数

oracle - 使用 PL/SQL 读取 csv 文件

postgresql - Postgres 选择查询在使用 JDBC 时运行缓慢,但在同一服务器的 PSQL 中运行时运行速度很快

sql - 有一个名为...的列无法从这部分查询子查询中引用