powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Закрыть курсор если он существует
3 сообщений из 3, страница 1 из 1
Закрыть курсор если он существует
    #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
Закрыть курсор если он существует
    #35283058
бухарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так ?

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


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