postgresql 使用我的代码将从游标中读取多少行

jgwigjjp  于 2023-02-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

我是plpgsql的新手,我正在练习游标。
我有下面的简单代码,

create or replace function func_cursor_2() 
returns setof numeric as $$
declare
    cursor1 CURSOR for select empno,ename, job from emp;
    r record;
begin
    open cursor1;  
    loop  
        fetch from cursor1 into r;      
        exit when not found;
        return next r.empno;
    end loop;
    close cursor1;
end;
$$ language plpgsql;

select func_cursor_2()

fetch from cursor1 into r
1.在我看来,我是在逐个获取结果行吗?
1.有没有办法为从游标的一次读取指定100行?

mklgxw1f

mklgxw1f1#

为什么要用游标呢?这可以在一条语句中完成。

create or replace function func_cursor_2() 
  returns setof numeric
 language sql
as $$
    select empno 
      from emp 
     limit 100; 
$$;

但是,上面的代码不会返回一致的结果。要生成一致的结果,您需要添加order by empnooffset,具体取决于您的具体需要。
注:未测试。

相关问题