Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / move не переводит указатель в курсоре на первую запись / 2 сообщений из 2, страница 1 из 1
07.04.2017, 11:36
    #39434676
AlexGru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
move не переводит указатель в курсоре на первую запись
Код: sql
1.
2.
select version();
PostgreSQL 9.5.6



есть процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace function p_return_cursor(inout refcur refcursor) 
 returns refcursor
 LANGUAGE plpgsql
as $$
begin
 open refcur for select generate_series(1,10,1) as ID;		
end 
$$



Выполняем, проходимся по всему курсору в конец
Код: sql
1.
2.
3.
4.
begin;
 select p_return_cursor('refcur');

 fetch all in refcur;



результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1
2
3
4
5
6
7
8
9
10




Далее делаю перемещение на первую запись и опять выборку до конца.
Код: sql
1.
2.
 fetch all in refcur;
 MOVE first from refcur;



Результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
2
3
4
5
6
7
8
9
10



Почему с 2, а не с 1. ?

Спасибо.
...
Рейтинг: 0 / 0
07.04.2017, 14:03
    #39434822
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
move не переводит указатель в курсоре на первую запись
AlexGru,

Так задумано :
"Курсор связан с определённым положением, что и использует команда FETCH. Курсор может располагаться перед первой строкой результата запроса, на любой строке этого результата, либо после последней строки. При создании курсор оказывается перед первой строкой. Когда FETCH доходит до конца набора строк, курсор остаётся в положении после последней строки, либо перед первой, при движении назад. После команд FETCH ALL и FETCH BACKWARD ALL курсор всегда оказывается после последней строки или перед первой, соответственно."

Вам нужно:
Код: sql
1.
2.
move backward all in refcur;
fetch all in refcur;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / move не переводит указатель в курсоре на первую запись / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]