我什么时候应该在postgresql中使用fetch关键字

时间:2012-08-01 04:20:05

标签: sql postgresql cursor plpgsql

我是pg游标的新手,我在这里有一个光标:

create function simplecur() returns refcursor as $$
declare 
    abc cursor for 
    select t.registrant, u.display_name from incident_info t, sys_user u
    where t.registrant != 10000000 and u.id = t.registrant
    group by t.registrant, u.display_name
    order by t.registrant ;
begin
    open abc;
    return abc;
end
$$language plpgsql;

我只是使用

select simplecur()

它返回

abc

现在,我想知道,当我使用

时,我怎么能得到我的sql的结果
fetch all from abc;
它告诉我这样:

ERROR:  cursor "abc" does not exist

1 个答案:

答案 0 :(得分:1)

当您使用游标变量时,您需要an open transaction

begin;
  select simplecur();
  fetch all in abc;
commit;

另一个SO example