Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Закрыть курсор если он существует / 3 сообщений из 3, страница 1 из 1
27.04.2008, 18:56
    #35282324
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть курсор если он существует
Задача:
Объявляется некий курсор:
Код: plaintext
DECLARE cur_name SCROLL CURSOR WITH HOLD FOR запрос
и через некоторое время приходит команда на его закрытие:
Код: plaintext
CLOSE cur_name
И тут иногда возникает ситуация, что курсор на данный момент уже разрушен (ранее закрытой транзакцией), и возникает неприятная ошибка.
Конечно можно проверять, существует ли курсор:
Код: plaintext
select * from pg_cursors
Но как это будет все выглядеть в целом?
Пишем хранимую процедуру с кодом:
Код: plaintext
1.
if exists(select * from pg_cursors where name='cur_name') then execute("CLOSE cur_name") end if;
и тут же обламываемся, поскольку вылетает ошибка, сообщающая, что внутри ХП нельзя манипулировать курсорами.
Ну и как же быть? Очень не хотелось бы отдельно выполнять запрос "select * from pg_cursors where name='cur_name'", вытаскивать ответ, и потом закрывать курсор (или не закрывать), поскольку работаю через ODBC и все это будет медленно.
Подскажите, может кто сталкивался?
...
Рейтинг: 0 / 0
28.04.2008, 11:29
    #35283058
бухарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть курсор если он существует
а так ?

Код: plaintext
1.
2.
   IF NOT cur_name ISNULL THEN
      CLOSE cur_name;
   END IF;
...
Рейтинг: 0 / 0
08.05.2008, 15:10
    #35302720
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрыть курсор если он существует
Эта конструкция может закрыть только те курсоры, которые были открыты внутри ХП.
Т.е. курсоры внутри и вне ХП - очень разные вещи
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Закрыть курсор если он существует / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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