函数返回限制游标

时间:2016-12-15 18:18:32

标签: sql postgresql

我想问一下如何将光标返回限制表? 我的意思是一个函数,它采用(如果是绝对位置,如果向前或向后,有多少记录,绝对位置)并且作为获取绝对+前进。 我试过这个,但没有用。

drop function func(text,text,integer,integer);
create function func(text,text,integer,integer=0) returns refcursor as '
declare
    ref refcursor;
begin
    open ref for select * from test;
    if $1="A" then
        if $2="F" then
            move absolute $4 in ref;
            return fetch forward $3 from ref;   
        elseif $2="B"
            move absolute $4 in ref;
            return fetch backward $3 from ref;
        end if;
    elseif $1="B" then
        if $2="F" then
            return fetch forward $3 from ref;
        elseif $2="B"
            return fetch backward $3 from ref;
        end if;
    end if;
end;
'language plpgsql;

1 个答案:

答案 0 :(得分:0)

我认为您可能需要在查询本身中应用这些约束,而不是试图操纵游标。

我假设您的真实查询会有一个ORDER BY子句,因为没有它,FETCH方向毫无意义。而且,"是绝对的"参数似乎没有多大用处,因为指定'B'与指定位置'A'的{​​{1}}相同,所以您应该能够删除它。

最终结果将是这样的:

0