|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
День добрый. А вы не подскажете почему создание и комит транзакции приводит к завершению внешнего курсора?? 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 раз - вопрос почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 15:26 |
|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
Неожиданно - http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.sqlt.doc/ids_sqt_458.htm Чудно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 15:40 |
|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
Транзакция внутри курсора закрывает курсор. Чтобы этого не происходило, надо вызывать курсор с опцией WITH HOLD. С уважением, Виктор ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 16:01 |
|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
Да я уже понял. Не понятно лишь зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 16:09 |
|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
heavenmasterДа я уже понял. Не понятно лишь зачем? я тоже нарвался (давным давно)... Для себя считай, что "исторически сложилось" Когда кто-то решил, что так надо - и только так (впал в крайность по неизвестным мотивам). Позже одумался (или надоумили), что и вторая религия имеет право на существование... Но сторонникам новой религии всё равно как молиться, зачем же переучивать старых... Вот и осталось по умолчанию старое (неудобно). А таким как мы с тобою - просто тщательнее нужно читать документацию. Там иногда кроме таки мелочей и новые (приятные) вещи попадаются :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 16:55 |
|
Как работают курсоры??
|
|||
---|---|---|---|
#18+
АнатоЛойheavenmasterДа я уже понял. Не понятно лишь зачем? я тоже нарвался (давным давно)... Для себя считай, что "исторически сложилось" Когда кто-то решил, что так надо - и только так (впал в крайность по неизвестным мотивам). Ну почему же "крайность". Завершение транзакции подразумевает некое завершение определенного объема работ (пакета), связанных с изменениями данных, а значит и освобождением ресурсов, которые были до этого задействованы. Особенно учитывая блокировки, которые в многопользовательской среде могут причинять много неудобств, а также учитывая культуру программистов, которые "забывают" закрывать курсоры и не только :) Разве никогда не приходилось расследовать ситуации, что приложение постоянно разрастается в памяти, плодятся блокировкии т.п. ? А тут все автоматом - раз и подчистили за программистом :) Не нужно закрывать - примени другую конструкцию курсора, в чем проблема ? АнатоЛой Позже одумался (или надоумили), что и вторая религия имеет право на существование... Но сторонникам новой религии всё равно как молиться, зачем же переучивать старых... Вот и осталось по умолчанию старое (неудобно). Так обычно всегда и делается, иначе сколько старого софта бы заглючило.... АнатоЛойА таким как мы с тобою - просто тщательнее нужно читать документацию. Там иногда кроме таки мелочей и новые (приятные) вещи попадаются :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 21:22 |
|
|
start [/forum/topic.php?fid=44&fpage=24&tid=1607635]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 385ms |
total: | 500ms |
0 / 0 |