Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / При отладке в SQL manager for postgreSQL курсор не видит первую запись / 5 сообщений из 5, страница 1 из 1
07.05.2014, 18:49:16
    #38635948
andrei-k23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При отладке в SQL manager for postgreSQL курсор не видит первую запись
Подскажите, пож-ста, кто работал с курсорами в postgreSQL!
В коде ниже в отладке (SQL manager) берется вторая строка. Курсор теряет первую строку.

open rs for select t.* from table t
where t.product = product and t.cost < (t.sale - t.discount)
order by t.cost DESC;
fetch first from rs into rs_r; <-- после этого в record rs_r всегда попадает вторая строка из заданного курсора, почему не первая?

Мое незнание или ошибка SQL manager?
...
Рейтинг: 0 / 0
07.05.2014, 19:26:54
    #38635972
V&N
V&N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При отладке в SQL manager for postgreSQL курсор не видит первую запись
andrei-k23, что такое SQL manager?
без сторонних утилит проверить нельзя?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
drop table if exists t ;
create table t as select floor(i*random()*10)::int from generate_series (1, 1000, 100) i;
select * from t;

do $$
declare
  rs refcursor;
  rs_r record;
begin
  open rs for (select t.* from t order by 1);
  fetch first from rs into rs_r;
  raise warning 'first record %', rs_r;
  close rs;
end; $$;

Код: plaintext
WARNING:  first record (7)
...
Рейтинг: 0 / 0
08.05.2014, 11:13:13
    #38636397
andrei-k23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При отладке в SQL manager for postgreSQL курсор не видит первую запись
SQL manager - сторонняя утилита, без нее refcursor работает верно, но надо саму процедуру проверить по шагам.
Сделал цикл:

fetch first from rs into rs_r;
WHILE FOUND LOOP
fetch next from rs into rs_r;
END LOOP;

правильные данные, которые должны обработаться курсором:
1600, id = 14453691
1200, id = 14453692
1000, id = 14453693
1000, id = 14453694

Но при отладке курсор берет следующие значения:
1200, id = 14453692
1000, id = 14453693
1000, id = 14453694
1000, id = 14453694

Т.е. он не видит первую строку, а последнюю берет два раза...
...
Рейтинг: 0 / 0
08.05.2014, 12:08:51
    #38636540
V&N
V&N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При отладке в SQL manager for postgreSQL курсор не видит первую запись
andrei-k23, обратитесь в службу поддержки SQL manager
...
Рейтинг: 0 / 0
08.05.2014, 16:46:42
    #38637037
andrei-k23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При отладке в SQL manager for postgreSQL курсор не видит первую запись
Спасибо, я так и сделал, надеюсь, скоро поправят
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / При отладке в SQL manager for postgreSQL курсор не видит первую запись / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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