相关疑难解决方法(0)

调用返回refcursor的函数

我正在使用Postgresql 8.3并具有以下简单函数,它将返回refcursor 给客户端

CREATE OR REPLACE FUNCTION function_1() RETURNS refcursor AS $$
DECLARE
        ref_cursor REFCURSOR;
BEGIN
        OPEN ref_cursor FOR SELECT * FROM some_table;
        RETURN (ref_cursor);    
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但游标名称由PostgreSQL自动生成

BEGIN;
SELECT function_1();  --It will output the generated cursor name , for example , "<unnamed portal 11>" ;
FETCH 4   from  "<unnamed portal 11>"; 
COMMIT;
Run Code Online (Sandbox Code Playgroud)

此外,明确声明游标名称作为函数的输入参数,如 38.7.3.5所述.返回游标.可以声明我自己的游标名称并使用此游标名称来操作返回的游标而不是Postgresql自动为我生成?如果没有,是否有任何命令可以获取生成的游标名称?

sql postgresql plpgsql cursor ref-cursor

11
推荐指数
2
解决办法
3万
查看次数

如何从PL/pgSQL函数返回的refcursor中选择所有行?

我有一个函数some_func()返回refcursor:

CREATE OR REPLACE FUNCTION some_func() RETURNS refcursor AS (...)
Run Code Online (Sandbox Code Playgroud)

我想从控制台调用此函数并显示其返回的游标的结果集.在Oracle中我会写:

SELECT * FROM TABLE(some_func());
Run Code Online (Sandbox Code Playgroud)

PosgreSQL上的构造相当于什么?

postgresql plpgsql

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

plpgsql ×2

postgresql ×2

cursor ×1

ref-cursor ×1

sql ×1