我正在使用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自动为我生成?如果没有,是否有任何命令可以获取生成的游标名称?
我有一个函数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上的构造相当于什么?