Положение внутри открытого курсора с использованием запроса в PostgreSQL - PullRequest
0 голосов
/ 25 мая 2011

У меня есть курсор, объявленный в запросе, и я хочу переместить его в этот открытый курсор, используя другой запрос в той же таблице, например,

Вот мой курсор;

ОБЪЯВИТЬ КУРСОР mycursor ДЛЯ ВЫБРАТЬ * ИЗ mytable order by somedate;

Это позиция, на которую я хочу попасть: выберите ROWNUMBER () из mytable, где name = "fred"

Используя ROWNUMBER () (или какую-либо другую конструкцию), я хочу разместить в своем открытом курсоре.

Я знаю, что могу использовать Fetch / Move для позиционирования в пределах моего курсора, но позиционирование не является абсолютным.

Можно ли это сделать?

1 Ответ

1 голос
/ 25 мая 2011

Если я не читаю ваш вопрос неправильно, лучшее, что вы можете сделать, это:

DECLARE mycursor CURSOR FOR
SELECT *, rank() OVER (ORDER BY somedate) FROM mytable ORDER BY somedate;

Если вы знаете номер строки заранее, вы можете сразу перейти к нему с помощью перемещения / выборки; и если вы не хотите, но хотите знать это, вы можете получить к нему доступ, используя при получении.

Тем не менее, обратите внимание, что сам запрос будет медленнее. Так что вам будет лучше использовать limit/offet, если вы уже знаете положение своей строки, или считать строки по мере выхода из приложения, если вы этого не делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...