powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / move не переводит указатель в курсоре на первую запись
2 сообщений из 2, страница 1 из 1
move не переводит указатель в курсоре на первую запись
    #39434676
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
move не переводит указатель в курсоре на первую запись
    #39434822
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGru,

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

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


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