Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как работают курсоры?? / 7 сообщений из 7, страница 1 из 1
11.02.2010, 15:26
    #36463504
heavenmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
День добрый. А вы не подскажете почему создание и комит транзакции приводит к завершению внешнего курсора??

Create DBA Procedure "informix".test2();

Define fSerno SmallInt;

set debug file to "c:\temp\test2.txt";
trace on;

ForEach
select serno into fSerno
from services
trace fSerno;

Begin Work;
Commit Work;

End ForEach;

End Procedure;

Вот этот селект возвращает 3 строки

select serno into fSerno
from services

А курсор выполняется только 1 раз - вопрос почему?
...
Рейтинг: 0 / 0
11.02.2010, 15:40
    #36463553
heavenmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
...
Рейтинг: 0 / 0
11.02.2010, 16:01
    #36463617
victor16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
Транзакция внутри курсора закрывает курсор. Чтобы этого не происходило, надо вызывать курсор с опцией WITH HOLD.

С уважением,
Виктор
...
Рейтинг: 0 / 0
11.02.2010, 16:09
    #36463647
heavenmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
Да я уже понял. Не понятно лишь зачем?
...
Рейтинг: 0 / 0
11.02.2010, 16:55
    #36463829
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
heavenmasterДа я уже понял. Не понятно лишь зачем?
я тоже нарвался (давным давно)...

Для себя считай, что "исторически сложилось"
Когда кто-то решил, что так надо - и только так (впал в крайность по неизвестным мотивам).
Позже одумался (или надоумили), что и вторая религия имеет право на существование...
Но сторонникам новой религии всё равно как молиться, зачем же переучивать старых...
Вот и осталось по умолчанию старое (неудобно).
А таким как мы с тобою - просто тщательнее нужно читать документацию. Там иногда кроме таки мелочей и новые (приятные) вещи попадаются :)
...
Рейтинг: 0 / 0
11.02.2010, 21:22
    #36464444
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
АнатоЛойheavenmasterДа я уже понял. Не понятно лишь зачем?
я тоже нарвался (давным давно)...
Для себя считай, что "исторически сложилось"
Когда кто-то решил, что так надо - и только так (впал в крайность по неизвестным мотивам).

Ну почему же "крайность". Завершение транзакции подразумевает некое завершение определенного объема работ (пакета), связанных с изменениями данных, а значит и освобождением ресурсов, которые были до этого задействованы. Особенно учитывая блокировки, которые в многопользовательской среде могут причинять много неудобств, а также учитывая культуру программистов, которые "забывают" закрывать курсоры и не только :)
Разве никогда не приходилось расследовать ситуации, что приложение постоянно разрастается в памяти, плодятся блокировкии т.п. ?
А тут все автоматом - раз и подчистили за программистом :)
Не нужно закрывать - примени другую конструкцию курсора, в чем проблема ?
АнатоЛой
Позже одумался (или надоумили), что и вторая религия имеет право на существование...
Но сторонникам новой религии всё равно как молиться, зачем же переучивать старых...
Вот и осталось по умолчанию старое (неудобно).
Так обычно всегда и делается, иначе сколько старого софта бы заглючило....
АнатоЛойА таким как мы с тобою - просто тщательнее нужно читать документацию. Там иногда кроме таки мелочей и новые (приятные) вещи попадаются :)
...
Рейтинг: 0 / 0
15.02.2010, 11:00
    #36469193
heavenmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работают курсоры??
Да, видимо всё так и есть. Спасибо.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как работают курсоры?? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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